从表中获取正确的最后一个ID

时间:2013-03-15 21:59:56

标签: sql pdo

如何在PDO中创建SQL查询,知道下一个ID是什么?我已经对$sql->lastInsertId()SELECT LAST_INSERT_ID() FROM my_table进行了测试,但根据这些情况,当我的表中最后一个ID为66时,最后一个ID是116。

提前致谢!

4 个答案:

答案 0 :(得分:1)

LAST_INSERT_ID()返回使用自动增量插入的最后一个ID。实际上从那时起,记录可能会被删除(可能全部都是67-116),但这并不会改变自动增量位置,下一个id将是117.

如果您想了解表格中最大的ID,那么SELECT max(id) FROM table可以为您提供帮助。

答案 1 :(得分:1)

我希望说服你改变主意:

  • 一个不应该希望知道下一个ID
  • 无法知道接下来会发生什么。

id只是一个抽象值,只是偶然的数字。它的目的是独特。这意味着永远不会重复使用任何值。所以,它总是必须是一个全新的id。

这就是为什么你的数据库使它成为116而不是66 这就是为什么你必须满足于116,而不是强迫它为66

更不用说lastInsertId()SELECT LAST_INSERT_ID()都保证是正确的值,同时接受了建议使用max(lastID)的接受答案。

答案 2 :(得分:0)

如果ID列上有自动递增,则下一个ID并不总是last item's ID + 1。因此,如果插入两个元素(ID 1和2),删除第二个元素并再次插入新元素,其ID将为3,而不是2,但它也取决于您的数据库引擎。

但是,如果您想获得最后一个项目的ID,您可以通过降序ID对该列进行排序并选择第一个项目的ID

答案 3 :(得分:-1)

select max(lastID) from my_table工作吗? (假设包含上次创建的ID的列名称称为lastID)