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

时间:2012-07-21 20:42:58

标签: 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条推文,每条class 400条。这可能与一个查询有关吗?

1 个答案:

答案 0 :(得分:6)

如果class(3)的可能值数量有限,则可以使用一组UNION个查询轻松完成,每个查询都有自己的ORDER BY RAND()和{{1 }}:

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中。