sql 有则update 无则 insert

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

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值