MySQL查询以获得与第二列的最大值配对的列

时间:2011-09-15 18:48:50

标签: mysql sql group-by max

这适用于MySQL,但可能存在更普遍适用的SQL语句。不过,我并不需要这个便携式设备。

我有一张这样的表:

| id | site | used | date |
| 1  | A    | 180  | 9/15 |
| 2  | A    | 110  | 9/14 |
| 3  | A    | 90   | 9/13 |
| 4  | B    | 200  | 9/15 |
| 5  | B    | 220  | 9/14 |
| 6  | B    | 270  | 9/13 |
| 7  | C    | 910  | 9/14 |
| 8  | C    | 930  | 9/13 |

描述:每天捕获数据,但Site C的最后捕获日是9/14。

如何获得为每个站点捕获单行的结果集,该站点的日期可能有maxmim值?

结果将是:

| id | site | used | date |
| 1  | A    | 180  | 9/15 |
| 4  | B    | 200  | 9/15 |
| 7  | C    | 910  | 9/14 |

2 个答案:

答案 0 :(得分:2)

select t.*
from (
    select site, max(date) as MaxDate
    from MyTable
    group by site
) tm
inner join MyTable t on tm.site = t.site and tm.MaxDate = t.Date

如果有多个具有相同日期的站点记录,您将获得重复的行。

答案 1 :(得分:0)

SELECT * FROM (
   SELECT * FROM `test` ORDER BY date DESC
) AS t 
GROUP BY `site`