更新同一張表的資料。需要注意下細節,因為可能涉及到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而言,並不能隨意用於其它資料庫...