如何使用SQL获取从每个类别均匀分布的记录?

时间:2016-09-13 04:18:52

标签: mysql sql

我有一张这样的表:

category_id    uid    popularity   ts
=======================================
    03
    05
    07
    07
    07
    10
    10

对于每一行,uid都是唯一的,每行都属于某个类别,由category_id表示。假设我们共有10个类别,并且有数千条记录。

我尝试创建一个SQL查询,该查询将在特定时间范围内按受欢迎程度排序获得50条记录。这很容易做到。但是,如果我希望这50条记录从每个类别均匀分配,该怎么办?例如,如果有10个类别,每个类别有5个记录,则总共有50个记录。有没有办法通过一个SQL查询来做到这一点?或者我必须在10个单独的SQL查询中执行此操作?

1 个答案:

答案 0 :(得分:0)

select * from mytable where categoryid = 1 order by popularity desc limit 10
union all
select * from mytable where categoryid = 2 order by popularity desc limit 10
union all
select * from mytable where categoryid = 3 order by popularity desc limit 10

重复您有多少类别

某些MySQL向导可能会告诉您如何使用group by进行操作。

请参阅:unions