有时候我们想要批量修改数据的情况,可能是业务需要,也可能是垃圾数据修正
简单语法如下
merge into table_1 t1 //t1为执行批量操作的表
using (table|view|sub_query) t2 //t2 是t1条件判断的表(也可以是视图,结果集)
on (join contion) //括号内为 t1,t2 连接条件 ,类似JOIN语句的连接条件
when matched //如果适配执行语句
then
update set change_1,change_2... where ... | insert (coulmns) values(values) //可以执行更新和插入操作
when not matched //如何不适配执行 ,没有可以不写
then
update set change_1,change_2... where ... | insert (coulmns) values(values) //可以执行更新和插入操作
例句如下:
MERGE INTO
TAB1 T1 //需要操作的表
USING
TAB2 T2 //条件参数判断使用的表,也可以说查询的结果集,视图等
ON (T1.CODE=T2.CODE) //条件 ,类似JOIN语句中的ON 连接条件
WHEN MATCHED //如果成立
THEN
UPDATE //更新,也可以是INSERT
SET T1.X=T2.X , T1.Y=T2.Y //可以用逗号连接多个操作
WHERE T2.X IS NOT NULL AND T2.Y IS NOT NULL //如果需要,可以添加WHERE子句判断,可以不加
WHEN NOT MATCHED //如果不成立,则执行, 此条件如果不需要可以不写
UPDATE //也可以执行INSERT
SET T1.X=1,T1.Y=2
注意,操作merge操作为批量操作,语句执行前请确认好条件再执行,防止产生垃圾数据
TAB2可以是表,视图和查询后的结果集