sqlserver :示例語句
if not exists (select id,abc,def from A_TEST where id = 'A' and abc = 'B')
INSERT INTO A_TEST (id,abc,def,ddd) VALUES('A','B','C','D')
else update A_TEST set id = 'A',abc='B' ,def='def',ddd='ddd' where id = 'A' and abc = 'B'
註解: if not exists 判斷 後面括號中的語句是否可以查詢到數據, 如果能查詢到則執行else後面的 update語句
如果 查詢不到 則會執行 insert 語句 ,注意, 前面括號中的查詢語句條件 和 後面的 update語句的條件要一致, update語句 中 set的數據要和where 後面的條件一致, 否則 執行兩次會插入一條重複數據.
oracle 示例語句
Oracle 使用 MERGE INTO 高效方法:
eg: 有一個table QQ 三個字段 a,b,c 。一條新記錄比較 a,b兩個字段。如有記錄則update,無則insert
MERGE INTO QQ T1
USING (SELECT ‘aa’ AS a ,‘bb’ AS b,‘cc’ as c FROM dual) T2
ON ( T1.a=T2.a and T1.b=T2.b)
WHEN MATCHED THEN
UPDATE set T1.c= T2.c
WHEN NOT MATCHED THEN
INSERT ('id',a, b, c ,'state' ) values ('001','aa','bb','cc','2')