获取随机条目的 SQL 查询

Posted

技术标签:

【中文标题】获取随机条目的 SQL 查询【英文标题】:SQL query to get random entries 【发布时间】:2012-11-22 06:16:22 【问题描述】:

假设我有一张桌子 T。

并且 T 包含 X 个元组。 (并且表 T 有一个数字 PRIMARY KEY)

SQL 中有没有办法获取这些元组的随机子集(n)。

也就是说,每次我运行查询时都会输出一组不同的元组。

(注意:我知道这可以通过编程语言完成,但这意味着对我的数据库运行 N 个查询)。

我能想到的唯一解决方案是

1.在一个数组中生成n个唯一的随机数(arr)

2.将循环中的数字添加为

  "SELECT * FROM T where id="+arr[0] + "OR id=" +arr[1].....+"OR id="+arr[n]

我正在使用 phpMYADMIN 数据库

但这对我来说似乎并不优雅。有什么想法?

谢谢

【问题讨论】:

【参考方案1】:
SELECT * FROM T ORDER BY RAND() LIMIT 5

【讨论】:

不错。我什至从来没有听说过这个。我想我得再读点书了 有没有办法提取一组特定的条目。不用我上面的方法,我可以选择一组 5 个具有指定 ID 的条目 SELECT * FROM T WHERE ID IN (1, 2, 5, 456, 234, 123)

以上是关于获取随机条目的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致本地 mysql 服务器查询速度出现随机峰值?

SQL:连接中的限制和随机化结果

SQL 查询帮助:选择当月的随机员工

按值(不是列)分组后从组中选择一个随机条目?

使用子查询提取随机值每次都显示相同的值

在SQL中怎么样获取随机数