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

ocebsuys  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(293)

此sql查询

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

返回列的两个不同值 random '和' value '.
是否可以用相同的随机值更新一个查询中的两列?

8yparm6h

8yparm6h1#

为什么需要两列来存储相同的随机值?一列就够了!
但是,mysql允许以下不符合sql标准的行为:
如果访问要在表达式中更新的表中的列,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

相关问题