sql - 如何查询随机行?

标签 sql mysql query-optimization

<分区>

Possible Duplicate:
Alerternative to MySQL Order By Rand()

在以下场景中查询随机结果集的有效方式是什么:

  • 从许多行中随机选择一个。
  • 从许多行中选择(至少)n 个随机行。
  • 以随机顺序选择所有行。

对 MySQL 特别感兴趣,但可能是尝试其他任何东西的原因。

(主键是一个密集的 AUTO_INCREMENT 整数。)

最佳答案

编辑:正如 OMG Ponies 所指出的:This doesn't scale at all.谢谢,我的天啊。

尝试使用

ORDER BY RAND()

所以...

SELECT * FROM `table` ORDER BY RAND() LIMIT 1
SELECT * FROM `table` ORDER BY RAND() LIMIT n
SELECT * FROM `table` ORDER BY RAND()

关于sql - 如何查询随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353750/

相关文章:

java - 如何在 jOOQ 生成器中强制所有 DATE 列为 LocalDateTime?

sql - 数千列的动态枢轴

将 CIDR 转换为 IP 范围的 MySQL 查询

sql - Redshift/PostgreSQL 中子查询的 GroupAggregate

sql - 在 MySql 中强制执行查询以使用特定索引

mysql - SQL 选择大小写为

sql - 对于长时间运行的报告,我是使用只读事务还是可序列化事务?

mysql - sql不同函数的麻烦

php - MySQL:无法使用 VARBINARY 创建表?

ruby-on-rails - 轻量级内存数据库