为了获得表格内容的随机“排列”,选项是:
ORDER BY RAND()
我的问题是这在这方面是如何运作的?它将RAND()
称为“比较器”? RAND
不接受任何参数比较是不是很重要?
答案 0 :(得分:2)
返回0 <= v <0的范围内的随机浮点值v。 1.0。
您可以为其提供可选的seeding value
执行时,会将其视为virtual column
random numbers
。然后SQL engine
使用此列来sort
表内容,将其(动态列)视为任何普通列(具有浮点值)
答案 1 :(得分:2)
MySQL中的rand()
函数每次调用时都会返回一个随机值。
当这个过程是排序例程读取记录,调用rand函数,并隐式地将具有随机值的列添加到记录时,会发生什么。此列在视图中隐藏 - 您永远不会看到它,但它用于排序。
逻辑上,这相当于:
select <columns in t>
from (select t.*, rand() as ordering
from t
) t
order by ordering
答案 2 :(得分:0)
RAND()
返回随机浮点数,因此使用标准浮点数比较来比较这些值。这就像您在表模式中有一个浮点数列,并在ORDER BY
语句中使用它。这里没有魔力。