Oracle存在則更新,不存在則插入應用

2021-08-01 23:38:08 字數 2132 閱讀 3733

更新同一張表的資料。需要注意下細節,因為可能涉及到using的資料集為null,所以要使用count()函式。

[sql]view plain

copy

merge 

into

mn a  

using (select

count

(*) co 

from

mn where

mn.id=4) b  

on(b.co<>0)

--這裡使用了count和<>,注意下,想下為什麼!

when

matched 

then

update

seta.

name

= 'e'

where

a.id=4  

when

notmatched 

then

insert

values

(4, 

'e');  

不同表:

[sql]view plain

copy

--測試資料

create

table

table1(id varchar2(100),

name

varchar2(1000),address varchar2(1000));  

insert

into

table1(id,

name

,address)

values

('01001'

,'影子'

,'河北'

) ;  

commit

;  --插入

merge into

table1 t1  

using (select

'01002'

id,'影子'

name

,'河北'

address 

from

dual) t2  

on(t1.id = t2.id)  

when

matched 

then

update

sett1.

name

= t2.

name

, t1.address = t2.address  

when

notmatched 

then

insert

values

(t2.id, t2.

name

,t2.address);  

commit

;  --查詢結果

select

* from

table1  

01001    影子    河北  

01002    影子2    遼寧  

--更新

merge into

table1 t1  

using (select

'01001'

id,'不是影子'

name

,'山西'

address 

from

dual) t2  

on(t1.id = t2.id)  

when

matched 

then

update

sett1.

name

= t2.

name

, t1.address = t2.address  

when

notmatched 

then

insert

values

(t2.id, t2.

name

,t2.address);  

commit

;  --查詢結果

select

* from

table1  

01001    不是影子    山西  

01002    影子2    遼寧  

--刪除測試資料

drop

table

table1;  

Oracle存在則更新,不存在則插入應用

更新同一張表的資料。需要注意下細節,因為可能涉及到using的資料集為null,所以要使用count 函式。merge into mn a using select count co from mn where mn.id 4 b on b.co 0 這裡使用了count和 注意下,想下為什麼!wh...

MySQL記錄存在則更新,不存在則插入

create table tb file authorize authorize id int 11 not null auto increment,str id int 11 default null comment 使用者標識 file id int 11 default null commen...

MySql 不存在則插入,存在則更新或忽略

前言 在插入資料時,可能需要忽略或替換掉重複的資料 依據某個字段 這時可以在應用層處理,也可以使用複雜的 sql 語句來處理 如果僅僅知道一些簡單的 sql 語法的話 當然也可以使用一些簡單的 sql 語法,不過它並不是通用所有的資料庫型別。以下所有例項僅針對mysql而言,並不能隨意用於其它資料庫...