如何在PHP中从MySQL数据库中选择一个随机行?

3

我在一个在线Web服务器上有一个数据库表questions,其中有2000多行数据,我需要随机选出6行。这6行必须是不同的,以便于同一问题不会出现两次在这个问题列表数组中。

我该如何实现这个需求?


1
选择 * 从 表格 排序 按 rand() 限制 6 - Professor Abronsius
请使用 your query with RAND() LIMIT 10; 进行查询。 - Karthi
但是有可能有一些问题与另一个问题匹配。 - S.I.
可能是MySql中快速随机行的重复问题 - Gábor Bakos
2个回答

6

你有相对较少的数据,因此最简单的方法是:

select q.*
from questions q
order by rand()
limit 6;

在这个查询中,order by 操作所需时间最长。对2000行进行排序可能会引起注意。一个简单的解决方法是减少被排序的行数。一种方法是:

select q.*
from questions q cross join
     (select count(*) as cnt from questions) m
where rand() < 100 / m.cnt
order by rand()
limit 6;

where 会随机选择大约100行,然后对这些行进行排序并选择其中的6行。您几乎可以保证 where 总是会选择至少6行。


4

在MySQL中使用DISTINCT运算符:

SELECT DISTINCT column FROM table ORDER BY RAND() LIMIT 6;

因此,DISTINCT将处理并删除重复项。


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