简单的update语句:update table set column where condition
如果我需要set的值需要进行子查询,进行批量操作,这个时候我们可使用merge into语句,
MERGE INTO 目标表
USING 源表
ON(目标表.列名 = 源表.列名)
WHEN MATCHED THEN(若吻合)
UPDATE(则更新目标表) ,设 列名 = 源表.列名
言简意赅:你就把merge into当做inner join看
正常inner join查询 select a from table1 inner join table2 on table1.id=table2.id
只不过把inner join换成了merge into
例子:
为了更新 SS_USER 表中的 PHONENUMBER 字段,使其值为 VIEW_QX_CORP_INFO 表中的 A_CORP_PHONE,并且满足特定的条件
merge into SS_USER a using(
select b.C_CORP_USER_ID,b.A_CORP_PHONE
from
JC_REPORT_CHECK_TASK a,
VIEW_QX_CORP_INFO b,
SS_USER c where a.CORP_ID = b.C_CORP_USER_ID and a.CORP_ID = c.USER_ID and (b.c_v_003='0' or b.d_v_003='0') and b.A_STATUS
!='-1' and a.V003!='1' and c.PHONENUMBER is null and a.PLAN_ID='fd4e04479ee24b3f991bac3503a8057a' and b.A_CORP_PHONE is not null
) t on (a.user_id=t.C_CORP_USER_ID)
when matched then
update set a.PHONENUMBER = t.A_CORP_PHONE