Oracle 数据库 merge into
1.Merge into 的作用: 有则更新,无则插入
merge into的作用是对表进行更改或插入操作,如果表中数据已经存在那就进行更改,如果不存在就进行插入。
2.为什么用merge into
在一定条件下比正常的分开写update与insert方便,且执行效率高。
公式:
MERGE INTO [表1名] [表1的别名]
USING [select查询语句] [select查询语句的别名]
ON ([条件表达式])
WHEN MATCHED THEN
[update语句]
WHEN NOT MATCHED THEN
[insert语句]
代码
想要的效果: 将TT_CLASS表中的id值 与TT_STUDENT表里的clid值相同的数据的name字段值修改成与TT_STUDENT中的clname字段的值
代码如下:
MERGE INTO T T1 --T为目标表,T1为T的别名
USING (SELECT 1 AS a, 2 AS b FROM dual) T2 --Using后的括号里是源表的查询语句,T2为源表的别名
ON ( T1.a=T2.a) --ON后的括号里是条件表达式(两表的关系)
WHEN MATCHED THEN --如果满足条件
UPDATE SET T1.b= T2.b --如果满足条件,就更新(注意语句写法:不用加表名,因为都是对目标表T的操作)
WHEN NOT MATCHED THEN --如果不满足条件
INSERT (a,b) VALUES(T2.a,T2.b); --如果不满足条件,就插入(和update一样,不用写表名)