UPDATE的MYSQL查询问题

时间:2011-09-25 17:12:45

标签: mysql

我有这个问题:

UPDATE people 
SET column1 = (
    SELECT if(r.rand BETWEEN 103 AND 109, 110, r.rand)
    FROM ( SELECT floor(8+rand()*113) rand ) r
)

但是,它会将SAME随机数设置为每一行。如何更改它以便为每一行赋予不同的值?

1 个答案:

答案 0 :(得分:1)

似乎问题来自子查询,如果你可以简化你的任务,如下所示:

UPDATE people 
SET column1 = floor(8+rand()*113) 

它会以您期望的方式工作:每行都分配了一个不同的随机数。但是,子查询返回分配给所有行的单个值。

我想如果你不能简化删除标量子查询的逻辑,你可能需要编写一个存储过程或一个简短的程序来做你想做的事。