mysql - 如何从 MySQL 中随机选择记录样本?

标签 mysql sql

考虑下表:

tweets
-----------------------
id  tweet         class
-----------------------
1   Foo bar baz!  2
2   Lorem ipsum   2
3   Foobar lorem  3
4   Activi set    1
5   Baz baz bar?  3
7   Dolor mez foo 3
8   Samet set bar 1

实际上,该表有 600,000 条记录,但如示例表所示,一些 id 已被删除(因此最高 id > 600,000)。 class 可以是 123

我需要随机选择 1200 条推文,每个类别 400 条。这可能与一个查询有关吗?

最佳答案

如果 class (3) 的可能值数量有限,则可以使用一组 UNION 查询轻松完成,每个查询都有自己的 按 RAND()LIMIT 400 排序:

(SELECT id, tweet, class FROM tweets WHERE class = 1 ORDER BY RAND() LIMIT 400)
UNION
(SELECT id, tweet, class FROM tweets WHERE class = 2 ORDER BY RAND() LIMIT 400)
UNION
(SELECT id, tweet, class FROM tweets WHERE class = 3 ORDER BY RAND() LIMIT 400)

要将 ORDER BY 应用于每个 UNION 组,该组必须包含在 () 中。

关于mysql - 如何从 MySQL 中随机选择记录样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595696/

相关文章:

mysql - Access 中的查询非常慢,SQL 服务器可以做得更好吗

sql - django 在运行测试时如何查看 sql 查询?

MySQL SUM 字符串中的数字

mysql - 民意调查 Web 应用程序的数据库结构建议

mysql - 将单个表从 mysqldump 数据库备份恢复到同一数据库中的不同表?

mysql - SQL 查询选择除 'ignore_table' 中定义的记录之外的整个表

sql - SQL中如何查看删除一张表后会影响多少个存储过程

php - PDO 搜索查询,让它像 Android 联系人搜索

mysql - 从 3 个 mySQL 表中提取数据

mysql - 从与其他关联的表中插入数据