首頁 資料庫 mysql教程 MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何簡化條件插入和更新?

MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何簡化條件插入和更新?

Jan 21, 2025 pm 12:04 PM

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Simplify Conditional Inserts and Updates?

MySQL 的 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 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

減少在Docker中使用MySQL內存的使用 減少在Docker中使用MySQL內存的使用 Mar 04, 2025 pm 03:52 PM

減少在Docker中使用MySQL內存的使用

如何使用Alter Table語句在MySQL中更改表? 如何使用Alter Table語句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

如何使用Alter Table語句在MySQL中更改表?

mysql無法打開共享庫怎麼解決 mysql無法打開共享庫怎麼解決 Mar 04, 2025 pm 04:01 PM

mysql無法打開共享庫怎麼解決

什麼是 SQLite?全面概述 什麼是 SQLite?全面概述 Mar 04, 2025 pm 03:55 PM

什麼是 SQLite?全面概述

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) 在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) Mar 04, 2025 pm 03:54 PM

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

在MacOS上運行多個MySQL版本:逐步指南 在MacOS上運行多個MySQL版本:逐步指南 Mar 04, 2025 pm 03:49 PM

在MacOS上運行多個MySQL版本:逐步指南

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? 如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? Mar 18, 2025 pm 12:00 PM

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?

如何為MySQL連接配置SSL/TLS加密? 如何為MySQL連接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

如何為MySQL連接配置SSL/TLS加密?

See all articles