选择给定索引的最后插入行

时间:2012-11-20 01:50:56

标签: mysql sql

我制作了一个小型修订系统,每次修改时都会存储新版本的文本。

表格如下:

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

什么SQL语句会为每个nID提供最后插入的行?像这样:

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

1 个答案:

答案 0 :(得分:3)

创建子查询的想法是为每个RevID获取最大 NID,然后将其连接到表本身但是有两个连接条件:它匹配使用NID并且它也与RevID

匹配
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
相关问题