【问题标题】:MySQL select the last two inserted IDsMySQL选择最后两个插入的ID
【发布时间】:2017-12-15 09:01:16
【问题描述】:

如何选择最后插入的两个 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 中删除最后一条记录并插入另一条记录,我的生成器将生成一个不是 last+1 的新 PK。

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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你需要的步骤:

    1. 获取最大 ID
    2. 获取的最大 ID 小于该值

    这将是:

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

    另一种方法:获取最后两个,然后获取倒数第二个。

    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
    )
    

    【讨论】:

    • 又好又简单!不知道为什么我没想到.. 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多