2013-03-15 33 views
-1

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

在此先感谢!

回答

-1

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

+0

这样做! :) 非常感谢!我会尽快接受你的回答。 – Erik 2013-03-15 22:03:47

+0

这个答案本质上是错误的,最好被删除。 – 2013-03-16 07:22:09

0

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

但是,如果你想获得最后一个项目的ID可能,例如,通过降ID责令列,选择第一项的ID

1

LAST_INSERT_ID()返回插入与autoincrementation最后一个ID。其实从那时起记录可能会被删除(也许所有这些都是从67-116),但这并不会改变自动增量位置,而下一个ID将会是117.

如果你想知道什么是最大的id你的桌子,然后SELECT max(id) FROM table可以帮助你。

+0

啊!所以这是因为它返回116 – Erik 2013-03-15 22:06:28

+0

其实它都在手册:) http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id – aorcsik 2013-03-15 22:11:38

1

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

  • 一个应该想知道下一个ID
  • 没有办法知道什么是未来。

id只是一个抽象值,类似于意外的数字。它的目的是独特。这意味着没有值必须重复使用。所以,它将永远是一个全新的ID。

这就是为什么你的数据库使得它116,而不是66
这就是为什么你必须是内容与116,不强制其66

且不说两者lastInsertId()SELECT LAST_INSERT_ID()保证是正确的价值,同时接受了暗示使用max(lastID)的接受答案。