MySql从每个国家/地区中选择前3个结果

时间:2013-10-10 08:35:20

标签: mysql

这是我的问题......(非常感谢那里的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;

然而,这在一定程度上起作用 - 但它按国家/地区(按字母顺序排列)对列表进行排序。

道歉,如果这是模糊的......但是会喜欢一些想法!!!

提前多多感谢!

1 个答案:

答案 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