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

标签 php mysql database

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

我怎样才能做到这一点?

最佳答案

你的数据量比较小,所以最简单的方法是:

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

关于php - 如何在 PHP 中从 MySQL 数据库中选择随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40192016/

相关文章:

php - Wordpress 自定义联系表不起作用

mysql - 在 mysql 中使用单个查询计算多个值

mysql - 从“不在”中选择 - 除外

Python内部数据库使用

database - 使用 Visual Studio 2010 的 Windows 7 手机应用程序不支持 DLL

php - 将数据库中的数据显示给特定用户(使用角色?)

php - 在 jQuery ajax 请求中保护和/或加密(隐藏)POST 变量

javascript - WordPress 中未找到错误 404 页面

mysql - 为什么在 MariaDB 上创建表时出现此错误? "Could not getColumn for MyMariaDB: Unknown system variable ' 选项'"

java - 多个 Hibernate 数据源