我有这个问题:
UPDATE people
SET column1 = (
SELECT if(r.rand BETWEEN 103 AND 109, 110, r.rand)
FROM ( SELECT floor(8+rand()*113) rand ) r
)
但是,它为每一行设置了相同的随机数。如何更改它以便为每一行赋予不同的值?
最佳答案
看来问题出在子查询上,如果您可以像下面这样简化您的分配:
UPDATE people
SET column1 = floor(8+rand()*113)
它会按照您期望的方式工作:每一行都分配了一个不同的随机数。然而,子查询返回分配给所有行的单个值。
我猜如果你不能简化删除标量子查询的逻辑,你可能不得不编写一个存储过程或一个简短的程序来做你想做的事。
关于MYSQL 查询问题与更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547129/