【发布时间】:2013-01-29 08:49:11
【问题描述】:
我有几张类似的桌子。我需要通过*选择它们。
我想获取revnr 是每个docid 中最高行的行列表。
我的问题是我不知道如何为每个docid 获取本地max(revnr)。
我正在使用 MySQL,但我更喜欢通用的 sql 解决方案。
谢谢!
【问题讨论】:
标签: mysql sql join greatest-n-per-group
我有几张类似的桌子。我需要通过*选择它们。
我想获取revnr 是每个docid 中最高行的行列表。
我的问题是我不知道如何为每个docid 获取本地max(revnr)。
我正在使用 MySQL,但我更喜欢通用的 sql 解决方案。
谢谢!
【问题讨论】:
标签: mysql sql join greatest-n-per-group
您可以在子查询中为每个docID 获取revnr 的最新值,然后其结果将连接到表本身。
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);
【讨论】: