可能重复:
mysql: Using LIMIT within GROUP BY to get N results per group?
我需要执行一个选择,它将返回(n)每个唯一us_state的记录数。
基本上,我想找到一个等同于TOP(n),但由于MySQL不支持它,是否有一个类似的命令或方法,我可以用来快速权限专用代码执行相同的操作?
感谢。
答案 0 :(得分:1)
您要做的是为每个组选择一些记录。这可以通过在查询中使用与此类似的变量来完成:
select *
from
(
SELECT sid,
state,
votes,
@prev := @curr,
@curr := state,
@rank := IF(@prev = @curr, @rank+1, 1) AS rank
FROM
(
select t1.sid, state, votes
FROM table1 t1
INNER JOIN table2 t2
ON t1.sid=t2.sid
) src, (SELECT @curr := null, @prev := null, @rank := 1) r
ORDER BY state, votes desc
) src
where rank <= 2
order by state, votes;
此处列出了其他方法:
答案 1 :(得分:0)