2013-03-15 173 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)的接受答案。