0

这是我的问题......(非常感谢MySql专家的任何建议)

我有一个数据库表指定:

时间(9.99、10.96、11.02 等)
国家(例如 JAM、美国、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;

但是,这在一定程度上有效 - 但它按国家/地区(按字母顺序)对列表进行排序。

抱歉,如果这含糊不清..但会喜欢一些想法!

提前谢谢了!

4

1 回答 1

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
于 2013-10-10T08:57:57.317 回答