查询的最大值

时间:2017-01-18 23:04:18

标签: sql greatest-n-per-group

我有一个数据集:

Id.   Code. Update time
222.  A.    1/1/16
222   B.    1/1/17
123   c     1/1/16
123   d.    1/1/17

我希望数据集过滤到:

222   B.    1/1/17
123   d.    1/1/17

我该如何进行查询?

2 个答案:

答案 0 :(得分:0)

首先编写一个子查询,查找每个ID的最新日期。然后将子查询连接回主表以获取其他列:

SELECT t.ID, t.code, t.updatetime
FROM table t
INNER JOIN
(SELECT ID, MAX(updatetime) AS mxtime
 FROM table
 GROUP BY ID) sub
ON t.ID = sub.ID
AND t.updatetime = sub.mxtime

答案 1 :(得分:0)

如上所述,这是一个简单的聚合查询:

select id, max(code) as code, max(updatetime) as updatetime
from t
group by id;

如果这不是你想要的,那么你需要更清楚你想要实现的逻辑。