1

私はいくつかの同様のテーブルを持っています。でそれらを選択する必要があります*。それぞれの中で最も高い
行のリストを取得したいと思います。revnrdocid

max(revnr)ここでの問題は、それぞれのローカルを取得する方法がわからないことdocidです。

私は MySQL を使用していますが、一般的な SQL ソリューションを使用したいと考えています。

ありがとう!

4

1 に答える 1

3

サブクエリでrevnrfor eachの最新の値を取得すると、その結果がテーブル自体に結合されます。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);
于 2013-01-29T08:51:08.033 に答える