【发布时间】:2021-06-25 09:37:40
【问题描述】:
我有一个表“名字”
+----+-------+
| id | name |
+----+-------+
| 1 | Sam |
| 2 | Tom |
| 3 | David |
| 4 | Bob |
+----+-------+
现在我只想强制 MySql 在每次查询时给我一个随机名称。所以要做到这一点,我执行:
select name
from firstname
where id = CEIL((select count(*) from firstname) * rand());
并且此查询不时返回零到三个结果。但是,如果我设置一个包含先前计算的 id 的会话变量,那么它可以正常工作
set @x = CEIL((select count(*) from firstname) * rand());
select name
from firstname
where id = @x;
为什么会这样?如何在没有会话变量的情况下进行内联查询?
在“5.6.25”和“5.6.51”上测试
【问题讨论】:
标签: mysql