我的数据库中有以下数据:
|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
你在找每个型号的最大日期吗?
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;