我有一张这样的表:
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查询中执行此操作?
答案 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