2012年11月15日

If Exists INSERT and UPDATE in MySQL

一般 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 。



Orignal From: If Exists INSERT and UPDATE in MySQL