请考虑下表:
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。
id
class
1
2
3
我需要 随机选择 1200条Tweet,每条400条class。这可能与一个查询有关吗?
如果class(3)的可能值数量有限,则可以通过一组UNION各自具有ORDER BY RAND()和的查询轻松完成此操作LIMIT 400:
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组,必须将组括在中()。
ORDER BY
()