考虑下表:
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
可以是 1
、2
或 3
。
我需要随机选择 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/