更新 - 问题
除了使用自联接之外,是否有更紧凑的方法来编写从表中选择最大记录的查询?
例如,可能具有以下架构的事件表:
EventID | EventType | Timestamp | Description
-----------+-----------+-----------+--------------
INT | VARCHAR | INT | VARCHAR
并且可能包含每种事件类型的多条记录。比方说:
1 | A | 100000 | 'First Event'
2 | A | 100005 | 'Second Event'
3 | B | 100009 | 'Third Event'
4 | A | 100009 | 'Fourth Event'
5 | B | 100010 | 'Fifth Event'
6 | B | 100030 | 'Sixth Event'
7 | A | 100030 | ' ... '
8 | C | 100030 | ' ... '
9 | C | 100050 | ' ... '
假设我想知道每种类型的最新事件是什么——事件#6、#7 和#9。然后我必须编写一个如下所示的查询:
SELECT EventID
, EventType
, Timestamp
, Description
FROM EventsTable T
INNER JOIN (SELECT EventType
, MAX(Timestamp)
FROM EventsTable TInner
GROUP BY EventType) TSelf
ON T.Timestamp = TSelf.Timestamp
AND T.EventType = TSelf.EventType
所以问题归结为:是否有更紧凑的方式来表达相同的查询,理想情况下不必求助于 JOIN?