开发者社区> 问答> 正文

sql问题,一条sql 更新所有记录为不重复的值?报错

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中插入重复键的行

展开
收起
爱吃鱼的程序员 2020-06-14 20:56:17 643 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    没有看懂问题改了一下。。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



    试试没测试过是否正确

    ab没关系怎么连接查询。。

    <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字段删除就好了我也不知道为啥你看不懂。。

    2020-06-14 20:56:34
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载