0

テキストが変更されるたびに新しいバージョンを保存する小さな改訂システムを作成しました。

テーブルは次のようになります。

+-------+-----+----------+
| revID | nID |   text   |
+-------+-----+----------+
|   1   |  1  |   foo    |
+-------+-----+----------+
|   2   |  1  |  newfoo  |
+-------+-----+----------+
|   3   |  2  |   bar    |
+-------+-----+----------+
|   4   |  2  |   baz    |
+-------+-----+----------+
|   5   |  3  |    a     |
+-------+-----+----------+

nID ごとに最後に挿入された行を取得する SQL ステートメントはどれですか? このような:

+-------+-----+----------+
| revID | nID |   text1  |
+-------+-----+----------+
|   2   |  1  |  newfoo  |
+-------+-----+----------+
|   4   |  2  |   baz    |
+-------+-----+----------+
|   5   |  3  |    a     |
+-------+-----+----------+
4

1 に答える 1

3

サブクエリを作成するという考え方は、各の最大値 を取得し、それをテーブル自体に対して結合することですが、2 つの結合条件 (一致すること、および一致すること) を使用します。RevIDNIDNIDRevID

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT nid, MAX(revID) maxID
            FROM tableName
            GROUP BY nid
        ) b ON a.nid = b.nid AND
                a.revID = b.maxID
于 2012-11-20T01:53:38.097 に答える