如何在 PDO 中进行 SQL 查询,知道下一个 ID 是什么?我已经测试过$sql->lastInsertId()
,SELECT LAST_INSERT_ID() FROM my_table
但根据这些,当我的表中最后一个 ID 为 66 时,最后一个 ID 为 116。
提前致谢!
LAST_INSERT_ID()
返回使用自动增量插入的最后一个 ID。实际上,从那时起记录可以被删除(可能全部从 67-116),但这不会改变自动增量位置,下一个 id 将是 117。
如果您想知道表中最大的 id 是什么,那么SELECT max(id) FROM table
可以为您提供帮助。
我希望能说服你改变主意:
id 只是一个抽象值,类似于数字只是偶然的。它的目的是独一无二。这意味着永远不需要重用任何值。所以,它总是必须是一个全新的 id。
这就是为什么您的数据库将其设为 116,而不是 66。
这就是为什么您必须满足于 116,而不是强迫它为 66
更不用说两者lastInsertId()
和SELECT LAST_INSERT_ID()
都保证是正确的值,而接受了建议使用max(lastID)
不是的公认答案。
如果您在 ID 列上有自动增量,则下一个 ID 并不总是last item's ID + 1
。因此,如果您插入两个元素(ID 1 和 2),删除第二个元素并再次插入新元素,其 ID 将为 3,而不是 2,但这也取决于您的数据库引擎。
但是,如果您想获取最后一项的 ID,例如,您可以按 ID 降序排列列并选择第一项的 ID
会select max(lastID) from my_table
工作吗?(假设包含最后创建的 ID 的列名称为 lastID)