MySQL中RAND()的工作流程?

Posted

技术标签:

【中文标题】MySQL中RAND()的工作流程?【英文标题】:Working procedure of RAND() in MySQL? 【发布时间】:2018-11-28 10:37:11 【问题描述】:

我正在尝试使用 mysql 中的 RAND() 从我的表中随机选择 5 行,并且我已将 LIMIT 设置为 5,但为什么有时它会返回少于 5 行?

这是我的查询:

SELECT id from MAIL where RAND() limit 5;

MAIL 是我的表名,包含超过 20 条记录。

【问题讨论】:

MySQL select 10 random rows from 600K rows fast的可能重复 ORDER BY not WHERE ORDER BY 给出 5 条记录。谢谢! 【参考方案1】:

在您使用rand() 函数的版本中,MySQL 在布尔上下文中评估其结果,因为它直接用于where 子句,而不是order by 子句。

如果rand() 被评估为假,则记录将被排除在结果集中之外。在特定查询中,由于这种方法可能会消除超过 15 条记录,从而导致返回的记录少于 5 条。

您应该使用order by rand() 子句来解决这个问题。

【讨论】:

以上是关于MySQL中RAND()的工作流程?的主要内容,如果未能解决你的问题,请参考以下文章

ORDER BY RAND()函数在mysql中执行需要很长时间[重复]

MySQL ORDER BY rand(),名称为 ASC

python 之 数据库(内置函数流程控制索引)

Qt rand() 无法正常工作

rand()函数怎么用?

每日一题 为了工作 2020 0325 第二十三题