开发者社区> 问答> 正文

问一个sql问题,一个update更新所有记录:报错

a表有5000条记录

  现更改其中一个字段的值

update a set score = round(rand()*10,0)

如何 一个update语句更新所有的记录为1~10内的随机数  而不是 更新成了 同一个值。。




展开
收起
kun坤 2020-06-06 00:19:46 588 0
1 条回答
写回答
取消 提交回答
  • update a set score = mod(a.id, 11);

    ######烦请讲解 下这个 mod(a.id,11)是啥意思啊######用a.id 除以 11取模,值域在【0-10】之间。符合你的要求,在0-10之间,这个值是A.ID定的。要想取随机值的话,mod((a.id + 随机数),11)即可。######更新成了同一值。。######不可能,mod(a.id,11) 是0-10之间的,除非你的a.id是同一个值。######mod(1,11) = 1
    mod(2,11) = 2
    mod(3,11) = 3
    mod(4,11) = 4
    mod(5,11) = 5    是这样的
    ######

    UPDATE DWQUERYTARGETLIST 

    SET DWQUERYTARGETLIST.TARGETID = TARGET.ID 

    FROM DWQUERYTARGETLIST 

    INNER JOIN TARGET 

    ON DWQUERYTARGETLIST.QUERYID = 1016 AND TARGET.CUSTOMERNUM = DWQUERYTARGETLIST.TARGETCUSTOMNUM



    sqlserver可以用这种方式... mysql应该也有..你可以查询一下.. mysql..好久没这么写过了

    ######

    就是只要一个SQL 满足把所有的字段更新成一个随机数就行了是吧,而且是同一值


    update a set score = (select  round(rand()*10,0) from dual) ;


    用上面的这个sql就可以解决了

    ######回复 @错II过 : 没有也可以啊,直接update a set score = (select round(rand()*10,0) from a) ;######回复 @错II过 : 我只用过oracle,怎么你的数据库没有dual?######不是oracle
    2020-06-06 00:19:50
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

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