小编典典

如何从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条Tweet,每条400条class。这可能与一个查询有关吗?


阅读 221

收藏
2021-04-28

共1个答案

小编典典

如果class(3)的可能值数量有限,则可以通过一组UNION各自具有ORDER BY 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组,必须将组括在中()

2021-04-28