这是我的问题......(非常感谢那里的MySql专家的建议)
我有一个数据库表,指定:
时间(9.99,10.96,11.02等。)
国家(例如JAM,USA,CAN等)
日期(例如,2011年,2012年,2013年等)。
我希望显示按指定年份(2012年)按时间(ASC)排序的排名列表
捕获 - 我只希望每个国家/地区最多显示三个条目,并且列表必须按时间排序(ASC)
我已经尝试过了(来自这里的另一个建议):
set @num := 0, @country := '';
select country, time
from (
select country, time,
@num := if(@country = country, @num + 1, 1) as row_number,
@country := country as dummy
from stats
where eventID = 1
order by country
) as x where x.row_number <= 3;
然而,这在一定程度上起作用 - 但它按国家/地区(按字母顺序排列)对列表进行排序。
道歉,如果这是模糊的......但是会喜欢一些想法!!!
提前多多感谢!
答案 0 :(得分:0)
试试这个:
SET @n=0,@s=-1;
SELECT
country,
time
FROM (
SELECT
country,
time,
@n:=IF(@s=-1 OR @s=country,@n+1,1) as n,
@s:=country
FROM
stats
ORDER BY
country
) as tmp
WHERE
n <= 3
ORDER BY
time