MYSQL 查询问题与更新

标签 mysql

我有这个问题:

UPDATE people 
SET column1 = (
    SELECT if(r.rand BETWEEN 103 AND 109, 110, r.rand)
    FROM ( SELECT floor(8+rand()*113) rand ) r
)

但是,它为每一行设置了相同的随机数。如何更改它以便为每一行赋予不同的值?

最佳答案

看来问题出在子查询上,如果您可以像下面这样简化您的分配:

UPDATE people 
SET column1 = floor(8+rand()*113) 

它会按照您期望的方式工作:每一行都分配了一个不同的随机数。然而,子查询返回分配给所有行的单个值。

我猜如果你不能简化删除标量子查询的逻辑,你可能不得不编写一个存储过程或一个简短的程序来做你想做的事。

关于MYSQL 查询问题与更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547129/

相关文章:

php - 从 MYSQL 查询中排除一年

MySql 外键 : ON DELETE NO ACTION behavour - how to leave info in referenced field?

mysql - mysql select 查询中多个字段的求和问题

MySQL 分组依据缺失值

MySQL 将返回值赋给变量

mysql - 将表/ View 从 mySQL 数据库导出为打印机友好格式(phpMyAdmin 除外)的方法

MySQL忽略查询中的子分区

php 和 mysql 实时搜索

javascript - 使用 setInterval 的 Ajax 调用不会从数据库获取新数据

MySQL 查询帮助作为附加格式