可能的重复:
mysql:在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果? https://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-results-per-group
我需要执行一个选择,该选择将返回每个唯一 us_state 的 (n) 条记录。
基本上,我想找到一个与 TOP(n) 等效的方法,但由于 MySQL 不支持它,是否有类似的命令或方法可以用来快捷地必须正确的专门代码来执行相同的操作?
Thanks.
您想要做的是为每组选择一些记录。这可以通过在查询中使用类似于以下的变量来完成:
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;
See SQL 摆弄演示 http://sqlfiddle.com/#!2/c86c1/1
还有其他方法可以做到这一点,此处概述:
在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果? https://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-results-per-group
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)