我有一些simliar表。我需要通过*
选择它们
我想获得一个列表,其中revnr
是每个docid
中最高的行。
我的问题是,我不知道如何为每个max(revnr)
获取本地docid
。
我正在使用MySQL,但我更喜欢通用的SQL解决方案。
谢谢!
答案 0 :(得分:3)
您可以在子查询中为每个revnr
获取docID
的最新值,然后其结果将连接到表本身。
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT docID, MAX(revnr) max_val
FROM tableName
GROUP BY docID
) b ON a.docID = b.docID AND
a.revnr = b.max_val
为了获得更好的效果,请在两列上添加INDEX
:docID
和revnr
ALTER TABLE tableName ADD INDEX (docID, revnr);