這是我的查詢:如何獲取更新行的ID行?
INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value
隨着mysql_insert_id()
我得到了新插入的ID,但如何獲得更新的行的ID?
我試過mysql_insert_id()
但是,對於更新的行,我得到0
這是我的查詢:如何獲取更新行的ID行?
INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value
隨着mysql_insert_id()
我得到了新插入的ID,但如何獲得更新的行的ID?
我試過mysql_insert_id()
但是,對於更新的行,我得到0
有沒有辦法做到這一點。你可以做SELECT id FROM table WHERE value = value;
既然你已經有了一個WHERE
聲明,你可以選擇一個不同的查詢。 mysql_insert_id()
確實如此。從INSERT獲取ID。
用mysql_insert_id()我得到0(在更新的行)! – Leonardo 2011-02-16 13:13:50
從MySQL 5.1.12開始,it's possible。 MySQL的last_insert_id函數將爲插入和更新操作返回自動增量字段的值。
MySQL ON DUPLICATE KEY - last insert id?
「查看此網頁出來:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 在他們解釋如何可以使LAST_INSERT_ID有意義的更新傳遞一個表達式,MySQL的功能頁面的底部。」
您將通過mysql_insert_id()php函數獲取insert id。
然而,當與ON DUPLICATE KEY UPDATE結合使用時,如果您希望mysql_insert_id()爲您提供已更新的密鑰,而不是生成的已插入的新密鑰,則必須多做一點。
更改SQL以
INSERT INTO table (value) VALUES (value)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),value=value;
查看更多信息here
我不認爲它可能在MySQL – 2011-02-16 13:11:16
希望看到張貼什麼樣的答案。過去有同樣的問題。我總是在之後做了選擇。 – David 2011-02-16 13:21:06