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 操作的一種靈活高效的技術。它允許您使用單個查詢執行插入和更新操作,從而簡化代碼並提高性能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3