我有这个问题:
UPDATE people
SET column1 = (
SELECT if(r.rand BETWEEN 103 AND 109, 110, r.rand)
FROM ( SELECT floor(8+rand()*113) rand ) r
)
但是,它会将SAME随机数设置为每一行。如何更改它以便为每一行赋予不同的值?
答案 0 :(得分:1)
似乎问题来自子查询,如果你可以简化你的任务,如下所示:
UPDATE people
SET column1 = floor(8+rand()*113)
它会以您期望的方式工作:每行都分配了一个不同的随机数。但是,子查询返回分配给所有行的单个值。
我想如果你不能简化删除标量子查询的逻辑,你可能需要编写一个存储过程或一个简短的程序来做你想做的事。