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

Sql 从表中获取正确的最后一个ID,sql,pdo,Sql,Pdo,我如何在PDO中进行SQL查询以知道下一个ID是什么?我已经测试了$sql->lastInsertId()和从我的表中选择了LAST\u INSERT\u ID(),但是根据这些测试,当我的表中的最后一个ID是66时,最后一个ID是116 提前谢谢 是否将从我的表格中选择max(lastID)工作?(假设包含上次创建的ID的列名称为lastID)如果ID列具有自动递增功能,则下一个ID并不总是最后一项的ID+1。因此,如果插入两个元素(ID 1和2),删除第二个元素并再次插入新元素,其ID将是3

我如何在PDO中进行SQL查询以知道下一个ID是什么?我已经测试了
$sql->lastInsertId()
从我的表中选择了LAST\u INSERT\u ID()
,但是根据这些测试,当我的表中的最后一个ID是66时,最后一个ID是116


提前谢谢

是否将
从我的表格中选择max(lastID)
工作?(假设包含上次创建的ID的列名称为lastID)

如果ID列具有自动递增功能,则下一个ID并不总是
最后一项的ID+1
。因此,如果插入两个元素(ID 1和2),删除第二个元素并再次插入新元素,其ID将是3,而不是2,但这也取决于您的DB引擎

但是,如果要获取最后一个项目的ID,例如,可以按降序ID对列进行排序,然后选择第一个项目的ID

last\u INSERT\u ID()
返回使用自动增量插入的最后一个ID。实际上,从那时起,记录可以被删除(可能是67-116中的所有记录),但这不会改变自动增量位置,下一个id将是117


如果您想知道表中最大的id是什么,那么
从表中选择max(id)
可以帮助您。

我希望说服您改变主意:

  • 不应希望知道下一个id
  • 没有办法知道下一步会是什么
id只是一个抽象值,只是偶然地与数字相似。它的目的是成为独一无二的。这意味着不必重复使用任何值。所以,它总是必须是一个全新的id

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


更不用说
lastInsertId()
SELECT LAST\u INSERT\u ID()
都保证是正确的值,而接受了建议使用
max(lastID)
的公认答案。

就是这样非常感谢!我会尽快接受你的回答。啊!所以,正因为如此,它返回了一个事实,它都在手册中:)