有时在 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 索引。