MySQL选择最后两个插入的ID

时间:2017-12-15 09:01:17

标签: mysql sql

如何选择最后两个插入的ID?

我在这里解释如何使用这些。这是我的问题:

INSERT INTO Table1 (FIELD1, FIELD2, FK_TABLE2, FIELD6) 
(SELECT FIELD1, FIELD2
,(SELECT MAX(PK_Table2)
    FROM Table2
    )
,(FIELD4 + FIELD5) FROM Table1 WHERE FIELD3 = (
    (SELECT MAX(PK_Table2)
        FROM Table2) - 1
    ))

对于table2的最后一条记录,这几乎应该复制链接到table2的最后一条记录的所有记录。

现在可行,但仅仅因为我还没有删除记录。

如果我从table2删除最后一条记录并插入另一条记录,我的生成器将生成一个不是最后一个+ 1的新PK。

例如:最后两个ID是:18-19。我删除19并插入另一个。现在最后两个ID是18-20。
因此Max(PK_Table2)将为20,而Max(PK_Table2)-1将为19,但我需要它为18。

1 个答案:

答案 0 :(得分:2)

您需要采取措施:

  1. 获取最高ID
  2. 获取最大ID
  3. 这将是:

    WHERE FIELD3 = 
    (
      SELECT MAX(PK_Table2) FROM Table2
      WHERE PK_Table2 < (SELECT MAX(PK_Table2) FROM Table2)
    )
    

    另一个approch:获取最后两个,然后获得倒数第二个。

    WHERE FIELD3 = 
    (
      SELECT PK_Table2
      FROM (SELECT PK_Table2 FROM Table2 ORDER BY PK_Table2 DESC LIMIT 2) x
      ORDER BY PK_Table2 LIMIT 1
    )