用查询中的相同随机值更新多列

时间:2018-11-25 09:48:33

标签: mysql sql sql-update

此SQL查询

UPDATE post
SET random = FLOOR( 1 + RAND( ) *15 ),
    value = FLOOR( 1 + RAND( ) *15 )

为“ random”和“ value”列返回两个不同的值。

是否可以使用相同的随机值更新一个查询中的两列?

1 个答案:

答案 0 :(得分:2)

为什么需要两列来存储相同的随机值?一栏就足够了!

但是,MySQL允许以下不符合SQL标准的behaviour

  

如果您访问表中要在表达式中更新的列,   UPDATE使用列的当前值。例如,   以下语句将col1设置为比其当前值大:

UPDATE t1 SET col1 = col1 + 1;
     

以下语句中的第二个赋值将col2设置为   当前(更新)的col1值,而不是原始的col1值。结果   col1和col2具有相同的值。此行为与   标准SQL。

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

因此,您可以尝试以下操作:

UPDATE post
SET random = FLOOR( 1 + RAND( ) *15 ),
    value = random