我需要执行一个选择,该选择将返回每个唯一 us_state 的 (n) 条记录。
基本上,我想找到一个等价于 TOP(n),但由于 MySQL 不支持它,是否有类似的命令或方法可以用来快捷地使用正确的专用代码来执行相同的操作?
谢谢。
我需要执行一个选择,该选择将返回每个唯一 us_state 的 (n) 条记录。
基本上,我想找到一个等价于 TOP(n),但由于 MySQL 不支持它,是否有类似的命令或方法可以用来快捷地使用正确的专用代码来执行相同的操作?
谢谢。
您要做的是为每组选择一些记录。这可以通过在查询中使用类似于以下的变量来完成:
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;
还有其他方法可以做到这一点,这里概述了: