繁体   English   中英

从MySQL数据库中选择随机条目

[英]Selecting random entry from MySQL Database

如何使用PHP从MySQL数据库中选择单个随机条目?

我想选择Author,AuthorText和Date?

SELECT Author, AuthorText, Date FROM table ORDER BY RAND() LIMIT 1
ORDER BY rand() LIMIT 1

将对表中的所有行进行排序,这可能非常慢。

更好的解决方案:假设您的表具有通常的主键自动增量字段,在min(id)和max(id)之间生成一个rendom数字并选择最接近的id。

它不会像“真正的”随机选择那样随机,因为在大洞中删除的id之后的id将具有更高的被选择概率。 但如果你的桌子很大,它需要50μs而不是2秒......

SET @t = (SELECT FLOOR(a + (b-a)*rand()) FROM (SELECT min(id) as a, max(id) as b FROM table)
SELECT * FROM table WHERE id>@t ORDER BY id LIMIT 1;

您可以按随机顺序排列并限制为1行,如下所示:

select 
  author, authortext, date 
from bookstable 
order by rand()
limit 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM