2

考虑下表:

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 条记录,但如示例表所示,一些ids 已被删除(因此最高id> 600,000)。 class可以是1,23.

我需要随机选择1200 条推文,每条推文 400 条class。这可能与一个查询有关吗?

4

1 回答 1

6

如果class(3) 的可能值数量有限,则可以通过一组UNION查询轻松完成,每个查询都有自己的ORDER BY RAND()and 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组,组必须包含在 中()

于 2012-07-21T20:47:23.057 回答