首頁 > 資料庫 > mysql教程 > MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何處理 Upsert 作業?

MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何處理 Upsert 作業?

Mary-Kate Olsen
發布: 2025-01-21 11:41:10
原創
816 人瀏覽過

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

MySQL 的高效 Upsert 操作:使用 INSERT ... ON DUPLICATE KEY UPDATE

在 MySQL 資料庫管理中,常常需要依照資料是否存在,執行插入新行或更新現有行操作。這就是所謂的“Upsert”操作(插入或更新)。

MySQL 提供了 INSERT ... ON DUPLICATE KEY UPDATE 語法,高效地實現 Upsert 功能。其工作原理如下:

INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...
登入後複製

INSERT 子句指定要插入表中的值。 ON DUPLICATE KEY UPDATE 子句定義當表中已存在具有相同主鍵(或唯一索引)的行時要執行的操作。

例如,考慮以下表格:

CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);
登入後複製

如果要為 thing_id 為 4815162342 的行插入新數據,將 times_used 列加 1,並將 first_time_used 設定為當前時間戳,可以使用以下 Upsert 查詢:

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 的行已存在,則查詢將更新 times_used 列,而 first_time_used 保持不變。否則,將插入新行。

INSERT ... ON DUPLICATE KEY UPDATE 是在 MySQL 中執行 Upsert 操作的一種靈活高效的技術。它允許您使用單一查詢執行插入和更新操作,從而簡化程式碼並提高效能。

以上是MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何處理 Upsert 作業?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板