首页 > 解决方案 > 在查询中更新具有相同随机值的多个列

问题描述

此 SQL 查询

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

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

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

标签: mysqlsqlsql-update

解决方案


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

但是,MySQL 允许以下非 SQL-Standard-Compliant行为

如果您从表中访问要在表达式中更新的列,则 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 

推荐阅读