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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章