If Exists INSERT and UPDATE in MySQL |
2012/11/15 ~ 阿亮 ~ |
一般 SQL 在做新增資料時,會判斷資料是否已存在,再決定 INSERT or UPDATE.
標準的 SQL 會這麼做
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue') UPDATE Table1 SET (...) WHERE Column1='SomeValue' ELSE INSERT INTO Table1 VALUES (...)
或者
UPDATE Table1 SET (...) WHERE Column1='SomeValue' IF @@ROWCOUNT=0 INSERT INTO Table1 VALUES (...)
但 MySQL 下, 以上兩個方法是不會 WORK 的,要用以下 Duplicate Key Update 的做法
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
這是因為 MySQL 沒有 IF EXISTS 以及 @@ROWCOUNT 。