MySQL – 依條件更新或新增資料(UPDATE or INSERT WHERE / ON DUPLICATE KEY)

若您有多個 MySQL 資料庫想要更新或新增相同鍵值的資料,我們可以用 ON DUPLICATE KEY 的方式來處理

我們以資料庫範例圖來實作(這是其中一個資料庫的範例)

資料表原始畫面

MySQL - 依條件更新或新增資料(UPDATE or INSERT WHERE / ON DUPLICATE KEY) - barryblogs.com

在這邊要更改 admin_email 的值,而以下語法可以先尋找是否有 option_name= ‘admin_email’ 的 key,如果有就更新 option_value,否則就直接插入一筆資料

SQL 語法

INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`)
VALUES (NULL, 'admin_email', 'service1@achang.com.tw', 'yes')
ON DUPLICATE KEY UPDATE `option_name` = 'admin_email', `option_value`='service1@achang.com.tw', `autoload`='yes';

以下是指令執行後的結果,同時我也下了 SELECT 方便直接檢視出結果列表:
(資料庫中存在 admin_email 時,更新會是 2 列,否則如果是新增資料,會顯示 1 列)

執行後結果畫面

MySQL - 依條件更新或新增資料(UPDATE or INSERT WHERE / ON DUPLICATE KEY) - barryblogs.com

SQL 語法簡述

再來,我們檢視一下語法

INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`)
VALUES (NULL, 'admin_email', 'service1@achang.com.tw', 'yes')
ON DUPLICATE KEY UPDATE `option_name` = 'admin_email', `option_value`='service1@achang.com.tw', `autoload`='yes';

ON DUPLICATE KEY UPDATE 可以當作條件,若資料中有 option_name= ‘admin_email’ 時,就會 UPDATE 逗號後面的所有資料
否則就直接使用 INSERT INTO … VALUES 來新增資料哦!

相連文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *