有時在 MySQL 新增資料時, 會先判斷資料是否存在, 如果資料不存在會執行 INSERT 語句, 如果資料存在則用 UPDATE 語句。以前要這樣做, 需要先用 SELECT 判斷, 就像這樣:
1 2 3 4 |
IF(SELECT * FROM users WHERE userid = '100') UPDATE users SET name = 'new_name' WHERE userid = '100'; ELSE INSERT INTO users (userid, name) VALUES ('100', 'new_name'); |
雖然可以完成上面提到的任務, 但寫程式時就會較麻煩, MySQL 提供了 INSERT … ON DUPLICATE KEY UPDATE 語句, 可以一行就完成, 無需用 IF 及 SELECT, 寫法是這樣:
1 2 |
INSERT INTO users (userid, name) VALUES ('100', 'new_name') ON DUPLICATE KEY UPDATE name = 'new_name'; |
要用上面的 INSERT … ON DUPLICATE KEY UPDATE 語句, 資料表必須有 PRIMARY KEY 或 UNIQUE 索引。