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