MySQL – 依條件更新或新增資料(UPDATE or INSERT WHERE / ON DUPLICATE KEY)
若您有多個 MySQL 資料表想要更新或新增相同鍵值的資料,我們可以用 ON DUPLICATE KEY 的方式來處理。
如果換個說法,就是可以讓他自己判斷是否已經存在這個資料,存在時就更新、不存在就寫入,這個非常方便!
我們以資料表範例圖來實作(這是其中一個資料表的範例)
資料表原始畫面
在這邊要更改 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', '[email protected]', 'no')
ON DUPLICATE KEY UPDATE `option_name` = 'admin_email', `option_value`='[email protected]', `autoload`='no';
以下是指令執行後的結果,同時我也下了 SELECT 方便直接檢視出結果列表:
(資料表中存在 admin_email 時,更新會是 2 列,否則如果是新增資料,會顯示 1 列)
執行後結果畫面
SQL 語法簡述
再來,我們檢視一下語法
INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`)
VALUES (NULL, 'admin_email', '[email protected]', 'no')
ON DUPLICATE KEY UPDATE `option_name` = 'admin_email', `option_value`='[email protected]', `autoload`='no';
ON DUPLICATE KEY UPDATE 可以當作條件,若資料中有 option_name= ‘admin_email’ 時,就會 UPDATE 逗號後面的所有資料
否則就直接使用 INSERT INTO … VALUES 來新增資料哦!
臉書留言
一般留言