MySQL 的高效率更新插入:INSERT ... ON DUPLICATE KEY UPDATE
MySQL 經常面臨需要根據鍵的存在插入新行或更新現有行的情況。這種組合運算稱為 upsert(或合併),可以在 MySQL 中使用單一語句優雅地處理。
重複密鑰更新時利用 INSERT ...
MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE
語句取代了多個查詢,簡化了此過程。它的語法很簡單:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (`value1`, `value2`, ...) ON DUPLICATE KEY UPDATE `column1` = `value1`, `column2` = `value2`, ...</code>
實際應用:增加使用次數
想像一個 usage
表,其中包含 thing_id
、times_used
和 first_time_used
欄位。 目標是如果行存在,則增加給定 times_used
的 thing_id
;否則,插入新行。
使用INSERT ... ON DUPLICATE KEY UPDATE
可以輕鬆完成此任務:
<code class="language-sql">INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1</code>
此查詢智慧地處理兩種情況:如果 thing_id
4815162342 存在,則 times_used
遞增;否則,將新增具有指定值的新行。 這證明了 MySQL 的 upsert 功能的高效和簡潔。
以上是MySQL的INSERT ... ON DUPLICATE KEY UPDATE如何有效率地處理插入與更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!