可能重复: mysql:使用组内的限制来获得每组的N个结果?
我需要执行一个select,它将返回每个唯一us_state的记录数(n)。
基本上,我希望找到一个与TOP(n)等价的值,但是由于MySQL不支持它,我是否可以使用类似的命令或方法来快速处理执行相同操作的专用代码?
谢谢。
发布于 2013-01-14 22:17:42
您要做的是选择每个组的多个记录。这可以通过在查询中使用类似于以下内容的变量来实现:
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;请参阅与Demo
实现这一目标的其他方法概述如下:
https://stackoverflow.com/questions/14326949
复制相似问题