a表有5000条数据,他们的nickname字段不重复
B有1W条数据,其中5000条regfrom =1 ,另5000regfrom=0
现在需要更新b中5000条regfrom=1的nickname字段 等于 a中的Nickname字段,且b.nickname 字段不重复。
update b set nickname=(select top 1 nickname from a order by newid())
where regfrom=1
这是我写的 但是报错,报的是无法咋爱具有唯一索引 xxx的对象b中插入重复键的行
没有看懂问题改了一下。。updateb,(selecta.id,a.nicknamefromagroupbya.nicknamehavingcount(a.nickname)=1)va
setb.nickname=va.nickname
whereb.id=va.id
-------------------------------------------
大概如此,改成你的RDBMS能认识的UPDATE语句即可。
泪奔。。a只有nickname一个字段,a和b没有任何联系在update之前。除了数目是5000<spanstyle="color:#444444;font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">你尝试一下这样写吧:updatebsetb.nickname=<spanstyle="color:#444444;font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">(selecta.nicknamefromawhereb.id=a.idgroupbya.nicknamehavingcount(a.nickname)=1)
<spanstyle="color:#444444;font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">不知道是否可以,没有测试过
我根据题主的sql来写的,有没有关系,这个我不清楚b和a真的没有关系。。mysql
<preclass="brush:sql;toolbar:true;auto-links:false;">updatebinnerjoinasetb.nickname=a.nicknamewhereb.regfrom=1<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">这是我写的 但是报错,报的是无法咋爱具有唯一索引xxx的对象b中插入重复键的行
<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">.....为啥我表示看不懂
回复<aclass='referer'target='_blank'>@大喵哥:。nickname是"a1"、"a2"这样排列的。update的时候要求打乱。回复<aclass='referer'target='_blank'>@错II过:不打乱啊你就是多加一列id,自动增长的就好了回复<aclass='referer'target='_blank'>@大喵哥:a表的nickname都是有顺序的现在要打乱呢还能这么来么。。回复<aclass='referer'target='_blank'>@错II过:提供一个方法吧,给a,b两个表都新建一个字段id,自动增长那种,然后然后把id都填写上去,然后通过id进行更新,更新完成以后把id字段删除就好了我也不知道为啥你看不懂。。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。