0

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

提前致谢!

4

4 回答 4

1

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

如果您想知道表中最大的 id 是什么,那么SELECT max(id) FROM table可以为您提供帮助。

于 2013-03-15T22:04:41.830 回答
1

我希望能说服你改变主意:

  • 希望知道下一个id
  • 没有办法知道接下来会发生什么。

id 只是一个抽象值,类似于数字只是偶然的。它的目的是独一无二。这意味着永远不需要重用任何值。所以,它总是必须是一个全新的 id。

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

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

于 2013-03-16T07:21:29.870 回答
0

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

但是,如果您想获取最后一项的 ID,例如,您可以按 ID 降序排列列并选择第一项的 ID

于 2013-03-15T22:03:48.477 回答
-1

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

于 2013-03-15T22:01:50.963 回答