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')