假设有一个包含 1000 个条目的表。我们想选择一个介于 1 到 1000 之间的随机数,并返回 id 大于或等于该值的所有行。输入静态值时,它似乎工作得很好。例如
Select * From myTable
Where id >= 500
Order by id Limit 10;
这将返回 500 到 509 的预期值。但是,一旦我尝试用随机生成的值替换 500 的固定值,事情就变得非常奇怪。
Select * From myTable
Where id >= floor(1 + RAND() * (1000 - 1))
Order by id Limit 10;
突然,它不再返回顺序值。返回的值也非常偏向低端。我得到这样的结果:
65, 80, 96, 98, 112, 114, 115, 116, 130, 131
为什么会这样?