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

如何在PHP中从MySQL数据库中选择随机行?,php,mysql,database,Php,Mysql,Database,我有一个在线web服务器上的数据库表,有2000多行,我需要随机选择6行。它们必须不同,以便一个问题在6个问题的列表数组中不会出现两次 如何实现这一点?在MySQL中使用操作符: SELECT DISTINCT column FROM table ORDER BY RAND() LIMIT 6; So DISTINCT将注意并删除重复项您的数据量相对较小,因此最简单的方法是: select q.* from questions q order by rand() limit 6; selec

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

如何实现这一点?

在MySQL中使用操作符:

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

So DISTINCT将注意并删除重复项

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

select q.*
from questions q
order by rand()
limit 6;
select q.*
from questions q cross join
     (select count(*) as cnt from questions) m
where rand() < 100 / m.cnt
order by rand()
limit 6;
在这个查询中,order by花费的时间最长。订购2000行可能是显而易见的。一个简单的修复方法是减少排序的行数。一种方法是:

select q.*
from questions q
order by rand()
limit 6;
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行。

select*from table order by rand limit 6?使用rand limit 10查询;但也有可能有些问题与另一个问题相匹配