【SQL】MERGE
MERGE可以合并多个表中的数据,也可实现多表中数据的同步。使用MERGE语句对表中数据进行有条件的更新和插入。当查找的行存在时,UPDATE更新行中的数据;当查找的行不存在时,INSERT插入数据。
语法如下:
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1=col_val1,
col2=col_val2
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);
语法解析:
MERGE INTO后跟要更新或者插入数据的目标表;
USING后跟源表;
ON后跟连接条件;
例如:同步dept表中数据到dept_1中
SQL> merge into dept_1 d1
2 using dept d
3 on (d.deptno=d1.deptno)
4 when matched then
5 update set d1.dname = d.dname, d1.loc = d.loc
6 when not matched then
7 insert values (d.deptno, d.dname, d.loc);
4 rows merged.
注意:ON后面作为连接条件的列不必再从SET后出现,即不能更新作为条件的列。否则会报如下错误:
SQL> merge into dept_1 d1
2 using dept d
3 on (d.deptno=d1.deptno)
4 when matched then
5 update set d1.deptno = d.deptno, d1.dname = d.dname, d1.loc = d.loc
6 when not matched then
7 insert values (d.deptno, d.dname, d.loc);
on (d.deptno=d1.deptno)
*
ERROR at line 3:
ORA-38104: Columns referenced in the ON Clause cannot be updated: "D1"."DEPTNO"
最新文章
- .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)
- VS2013中, 无法嵌入互操作类型“……”,请改用适用的接口的解决方法
- php捕捉来自搜索引擎的用户IP地址时间和访问路径
- <;页面里折合与打开>;
- Window Server 2012 R2 没有照片查看器 打开图片都是画板问题怎么解决
- acm 选夫婿
- 【温故而知新-Javascript】使用 Document 对象
- 字符串匹配的sunday算法
- jQ $.extend用法
- 代码,显示IPhone剩余磁盘空间
- LeetCode 202. Happy Number (快乐数字)
- linux常用基本命令整理小结
- 聊聊Unity的Gamma校正以及线性工作流
- ionic基于GPS定位并通过百度地图获取定位详细信息
- Postman runner参数化
- zstu 4247-萌新的旅行
- day20-面向对象编程、继承
- QMDP-Net: Deep Learning for Planning under Partial Observability
- 2019第十届蓝桥杯 E题 迷宫
- WebService有什么用?