提问者:小点点

从分组的MySQL数据获取最新日期


我的数据库中有以下数据:

|NO | model | date     | 
+---+-------+----------+
|1  | bee   |2011-12-01|
|2  | bee   |2011-12-05|
|3  | bee   |2011-12-12|
|4  | tar   |2011-12-13|

我想获得每个模型组的最新日期:

| model | date     | 
+-------+----------+
| bee   |2011-12-12|
| tar   |2011-12-13|

我试过:

SELECT model, date 
FROM doc
WHERE date ........????? //what is the next?
GROUP BY model

共1个答案

匿名用户

你在找每个型号的最大日期吗?

SELECT model, max(date) FROM doc
GROUP BY model

如果您正在寻找与整个表的最大日期匹配的所有模型...

SELECT model, date FROM doc
WHERE date IN (SELECT max(date) FROM doc)

[---已添加---]

对于那些希望显示与每个模型组中的最新日期匹配的每个记录的详细信息(而不是OP中要求的汇总数据)的用户:

SELECT d.model, d.date, d.color, d.etc FROM doc d
WHERE d.date IN (SELECT max(d2.date) FROM doc d2 WHERE d2.model=d.model)

MySQL8.0和更新版本支持over子句,对于较大的数据集,生成相同的结果要快一点。

SELECT model, date, color, etc FROM (SELECT model, date, color, etc, 
  max(date) OVER (PARTITION BY model) max_date FROM doc) predoc 
WHERE date=max_date;