2

为了获得表格内容的随机“排列”,一个选项是:
ORDER BY RAND()

我的问题是在这种情况下这是如何工作的?它要求RAND()用作“比较器”?RAND不拿任何论据来比较不重要吗?

4

3 回答 3

2

兰德()

返回 0 <= v < 1.0 范围内的随机浮点值 v。

你可以提供一个可选的seeding value

在执行时,这被视为virtual columnwith random numbers。然后SQL engine将此列用于sort表内容,将其(动态列)视为任何普通列(具有浮点值)

于 2013-04-14T19:40:45.733 回答
2

MySQL 中的rand()函数每次调用时都会返回一个随机值。

当这个过程发生时,排序例程读取一条记录,调用 rand 函数,并隐式地将一个具有随机值的列添加到记录中。此列是隐藏的——您永远看不到它,但它用于排序。

从逻辑上讲,这相当于:

select <columns in t>
from (select t.*, rand() as ordering
      from t
     ) t
order by ordering
于 2013-04-14T19:41:33.770 回答
0

RAND()返回随机浮点数,因此使用标准浮点数比较来比较这些值。就像您在表架构中有一个浮点数列并在ORDER BY语句中使用它。这里没有魔法。

于 2013-04-14T19:39:33.200 回答