考虑下表:
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条推文,每条class
400条。这可能与一个查询有关吗?
答案 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
中。