MYSQL:如何在单个查询中获取最大和第二最大日期

Sho*_*jaz 4 mysql sql

我正在尝试选择“最大日期”和“第二个最大日期”,但无法成功。

这是表数据。

ID Country  DATE 
1   Canada  2016-05-26
2   Canada  2016-05-25
3   Canada  2016-05-24

4   USA     2016-04-02
5   USA     2016-04-01
6   USA     2016-03-20
Run Code Online (Sandbox Code Playgroud)

期望输出

Country  Max_Date    2nd_Date

Canada  2016-05-26  2016-05-25 
USA     2016-04-02  2016-04-01
Run Code Online (Sandbox Code Playgroud)

我这样做的目的是:

使用此查询获取最大日期。

select Country, MAX(Date) from tbl GROUP BY (Country);
Run Code Online (Sandbox Code Playgroud)

对于第二个最大日期但未能获得结果:

SELECT Country, MAX(date) FROM tbl WHERE Date NOT IN 

( select MAX(FROM) from tbl GROUP BY (Country)) GROUP BY (Country)
Run Code Online (Sandbox Code Playgroud)

我应该尝试什么才能获得预期的输出。谢谢

Pau*_*ulF 6

或者你可以尝试这个

SELECT s.Country, Max(s.Date) Max_Date, 
(SELECT t.Date 
 FROM tbl t 
 Where s.Country=t.Country 
 ORDER BY Date DESC 
 LIMIT 1,1) 2nd_Date
FROM tbl s
GROUP BY COUNTRY;
Run Code Online (Sandbox Code Playgroud)

LIMIT 子句是从零开始的,因此使用参数 1,1 会跳过第一个(即最大值)值并仅返回一个值(第二个最大值)。

注意 - 如果最大日期重复,查询将返回 Max_Date 和 2nd_Date 作为相同的值 - 如果这不是您想要的,那么您可以将 DISTINCT 添加到内部查询。