我有这个问题
UPDATE f1
SET col = (SELECT ABS(300 + RANDOM() % 3600))
Run Code Online (Sandbox Code Playgroud)
用"300"和3600之间的随机数更新"col"列.但是它为所有行返回相同的随机数.有没有办法用不同的随机数更新行?
它使用相同的随机数,因为子查询只需要为UPDATE运行一次.换句话说,SQL引擎知道内部SELECT只需要为查询运行一次; 它会这样做,并使用每行的结果值.
实际上你不需要子查询.这将做你想要的:
UPDATE f1
SET col = ABS(300 + RANDOM() % 3600);
Run Code Online (Sandbox Code Playgroud)
但是如果由于某种原因你真的想要一个子查询,你只需要确保它依赖于正在更新的表中的行.例如:
UPDATE f1
SET col = (SELECT (col*0) + ABS(300 + RANDOM() % 3600));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7772 次 |
| 最近记录: |