MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何簡化條件插入和更新?
Jan 21, 2025 pm 12:04 PMMySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 語句:簡化條件插入與更新
在使用 MySQL 等關聯式資料庫時,您可能需要有條件地執行插入或更新操作。當您需要在記錄不存在時建立新記錄,或記錄已存在時更新記錄時,就會發生這種情況。傳統方法是結合 SELECT 和 INSERT 或 UPDATE 查詢,這可能會變得複雜且效率低。
幸運的是,MySQL 提供了一個更優雅的解決方案:INSERT ... ON DUPLICATE KEY UPDATE
語句。此多功能命令可讓您在記錄不存在時插入一行,或在表中已存在具有相同鍵的行時更新該行。
文法:
INSERT INTO `table_name` (`column_list`) VALUES (`value_list`) ON DUPLICATE KEY UPDATE `column_name` = `new_value`
登入後複製
工作原理:
- 此查詢遵循標準 INSERT 語法,指定目標表並提供列及其對應值的清單。
- 如果不存在具有匹配主鍵或唯一鍵值的行,則將新行插入表中。
- 如果存在具有相同鍵值的行,則
ON DUPLICATE KEY UPDATE
子句指定應使用提供的哪些值來更新哪些列。
範例:
考慮以下範例:
INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1
登入後複製
- 如果
thing_id
為 4815162342 的主鍵值不存在,則使用指定的值將新行插入usage
表中。 - 如果
thing_id
為 4815162342 的主鍵值已存在,則透過將其目前值加 1 來更新times_used
欄位。
優勢:
-
簡化的語法:
INSERT ... ON DUPLICATE KEY UPDATE
提供了一種簡潔明了的方法,可以使用單一查詢執行插入和更新操作。 - 效率:它避免了不必要的 SELECT 查詢來檢查現有記錄,從而減少了資料庫工作負載並提高了效能。
- 冪等性:該操作是冪等的,這意味著多次執行它不會更改資料或觸發任何錯誤。這簡化了程式碼處理並確保了資料完整性。
以上是MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何簡化條件插入和更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)
