从 MySQL 表中选择随机行。

17

我正在使用PHP和MySQL创建一个简单的Web应用程序。 我需要从表中随机选择一小部分行,并按随机顺序排列。 如何使用MySQL实现这样的事情?

可能是重复内容:
在MySQL中选择随机行


2
请在提问前先搜索。通过搜索您的问题的确切标题,可以找到这个和许多其他类似的问题。 - DaveRandom
MySQL如何快速从60万行中随机选择10行? - LF00
3个回答

47
SELECT * FROM table ORDER BY RAND() LIMIT 10;

编辑:

关于 MySQL RAND() 函数的有用信息可以在 这里 找到。


哎呀...我有超过500M行数据!这有点慢啊... - Jeff W
2
如果您有一个顺序主键,还有其他高效的选项。您可以在所选语言中预先计算一系列ID,并执行SELECT ... WHERE id IN(x)操作。 - Martin Gallagher
查询 select count(*) from users; 返回 10293453。查询 SELECT id FROM users ORDER BY RAND() LIMIT 10; 运行了 5 秒钟。 - serghei
刚刚找到了你的解决方案。非常感谢你,它非常简单易懂,正是我一直在寻找的。谢谢! - user7128548
你的解决方案是可行的,但当表格中有数百万行时,速度会变慢。因此,我建议在PHP中生成一个随机数并将其发送到SQL查询中。 - Almas

5
select * from table order by rand() limit 10

请注意,使用大型数据集的order by rand()非常缓慢,但在您的情况下这不是问题。

3
你可以使用RAND()函数来实现这一点。
SELECT questine FROM tablename ORDER BY RAND() LIMIT 10

将随机选择10个问题,假设问题存储在questine字段下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接