我的数据库中有以下数据:
|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)
您可以尝试在子查询中使用max(),如下所示:
SELECT model, date
FROM doc
WHERE date in (SELECT MAX(date) from doc GROUP BY model);
子查询给出日期。我们没有链接模型。所以下面的查询解决了这个问题。
如果有重复的日期/模型可以通过以下查询避免。
select t.model, t.date
from doc t
inner join (select model, max(date) as MaxDate from doc group by model)
tm on t.model = tm.model and t.date = tm.MaxDate
试试这个:
SELECT model, date
FROM doc
WHERE date = (SELECT MAX(date)
FROM doc GROUP BY model LIMIT 0, 1)
GROUP BY model
使用max(date)并没有解决我的问题,因为无法保证其他列与max(date)来自同一行。而不是这个解决了我的问题,并按正确的顺序排序组,其他列的值来自与最大日期相同的行:
SELECT model, date
FROM (SELECT * FROM doc ORDER BY date DESC) as sortedTable
GROUP BY model
这应该工作:
SELECT model, date FROM doc GROUP BY model ORDER BY date DESC
它只是将日期从最后一个排序到第一个,并通过分组只抓取第一个。
为什么不使用这个呢?
SELECT model, date FROM doc ORDER BY date DESC LIMIT 1