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

时间:2016-10-22 12:11:51

标签: php mysql database

我在具有2000多行的在线Web服务器上有一个数据库表questions,我需要随机选择6行。它们必须是不同的,因此在6个问题的列表数组中,一个问题不是两次。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:8)

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

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

在此查询中,order by花费的时间最长。订购2,000行可能会很明显。一个简单的解决方法是减少订购的行数。一种方法是:

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行。

答案 1 :(得分:5)

在MySQL中使用DISTINCT运算符:

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

因此DISTINCT会照顾并删除重复项

相关问题