MySql从每个国家/地区选择前三名结果

MySql从每个国家/地区选择前三名结果,mysql,Mysql,这是我的问题。。。非常感谢MySql专家的建议 我有一个数据库表指定: 时间9.99、10.96、11.02等。。 国家如果酱、美国、罐头等。。 日期,如2011年、2012年、2013年等 我希望显示一个按时间ASC排序的2012年指定年份的排名列表 catch-I只想显示每个国家最多三个条目,列表必须按时间ASC排序 我在这里尝试了另一个建议: set @num := 0, @country := ''; select country, time from ( select country,

这是我的问题。。。非常感谢MySql专家的建议

我有一个数据库表指定: 时间9.99、10.96、11.02等。。 国家如果酱、美国、罐头等。。 日期,如2011年、2012年、2013年等

我希望显示一个按时间ASC排序的2012年指定年份的排名列表

catch-I只想显示每个国家最多三个条目,列表必须按时间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;
然而,这在一定程度上是可行的——但它是按国家字母顺序排列的

如果这是含糊不清的,我道歉。。但是我会喜欢一些想法

非常感谢

试试这个:

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

那就点别的吧!?!?!还在挣扎?考虑将适当的DDL和/或SqLFIDLE与期望的结果一起发布,您的示例时间是十进制值吗?9.99、10.96、11.02这些值是什么意思?我知道你在日期栏中保存了年份,但是时间到底包含什么呢?这是某种类型的月中日的组合值吗?只是好奇抱歉,伙计们,对这个很陌生。。。这是sqlfiddle谢谢-差不多了!我设置这个sqlfiddle是为了更好地了解我要在时间上以最快到最慢的速度实现的目标——每次不超过三个结果country@GavinLovegrove很高兴听到这个消息:不要忘记接受答案,这样其他人就可以看到解决方案