mysql - 在查询中更新具有相同随机值的多个列
问题描述
此 SQL 查询
UPDATE post
SET random = FLOOR( 1 + RAND( ) *15 ),
value = FLOOR( 1 + RAND( ) *15 )
为列 ' random
' 和 ' value
' 返回两个不同的值。
是否可以使用相同的随机值更新一个查询中的两列?
解决方案
为什么需要两列来存储相同的随机值?单列应该就足够了!
但是,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
推荐阅读
- java - 使用单个 json 但发布多个 AVRO 消息
- arrays - 如何将用户输入收集到 VBA 中的数组
- c++ - SFINAE 检测 CTAD 扣除指南的明确性
- visual-studio-code - VSCode 中选择的自定义转换,无需编写扩展
- python - bin 标签必须比 bin 边缘的数量少一
- javascript - 如何在使用 jquery 调整窗口大小时将导航链接更改为 btn?
- flutter - Navigator.pop() 没有关闭 showModalBottomSheet
- java - HashSet 添加了两个对象,它们为 equals() 返回 true 并且在 Java 中具有相同的哈希码
- python - 无法使用 Django Q 在 Django 中发送电子邮件
- javascript - 如何通过跟随鼠标在 JavaScript 中围绕多边形/圆形旋转项目?