7 1有條件的更新插入 Merge into

2022-04-19 06:47:03 字數 1228 閱讀 1890

插入之前,看錶中是否有這次準備插入的卻已經存在的資料,存在的進行更新,不存在進行插入 

在oracle裡面有兩種方法:

一,merge into

merge into test1  

using test2  

on (test1.numid = test2.numid)  

when matched then --不需要填寫更新的目標表

update settest1.varid = test2.varid  

when not matched then --不需要填寫插入的目標表

insert values(test2.numid, test2.varid);  

例子:--column1 column2 column3是變數

merge into users a

using (select v_column1 name, v_column2 password, v_column3 desc

from dual) b

on (a.name = b.name)

when matched then

update set a.password = b.password and a.desc = b.desc

when not matched then

insert (name, password, desc) values (b.name, b.password, b.desc);

二.--p_column1是變數或者引數

select count(*) into v_cnt from a where a.name = p_column1

if v_cnt>0 then update ..

else insert..

oracle中的exists表示()內子查詢語句返回結果不為空,是在where後面的.說明where條件成立就會執行主sql語句,

如果為空就表示where條件不成立,sql語句就不會執行。

not exists和exists相反,子查詢語句結果為空,則表示where條件成立,執行sql語句。負責不執行。

在sqlserver 可以直接使用

if exists(select 1 from a where a.name = p_column1)

update a set ...

else

insert ...

myslq有條件插入資料

要求是這樣的 我有乙個表存著基礎資料有乙個欄位是 管理號 我的目的是先查詢最新的管理號按照規則生成新管理號 然後insert到表裡新資料 由於查詢並不鎖表 所以在查詢到insert這步中間會有可能兩線程查詢到相同的管理號?參考了關鍵是如下的mysql語句,插入多條記錄 insert into cli...

有條件的表聯接

表1和表2在聯接時,希望顯示表1的全部記錄以及表2的部分記錄。嘗試使用下面的 sql 語句 select table1.table2as.from table1 left outer join select from table2 where rightname 計畫編制員 as table2as ...

RAILS有條件的校驗

rails中所有的驗證宣告都可以接受 if 選項,可以指定一段在校驗之前執行的 比如 只有在郵箱位址不為空的時候才驗證郵箱位址的格式 使用proc物件,呼叫時,傳入當前的模型物件作為引數,返回false時,不做校驗 validates format of email,with a za z0 9 a...