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()的工作流程?的主要内容,如果未能解决你的问题,请参考以下文章