ORACLE多表级联更新( MERGE、UPDATE FROM JOIN替代语句)
方法一:MERGE语句的语法
MERGE INTO 表名
USING 表名/视图/子查询 ON 连接条件 --多个条件注意()括起来
WHEN MATCHED THEN -- 当匹配得上连接条件时
更新、删除操作
WHEN NOT MATCHED THEN -- 当匹配不上连接条件时
更新、删除、插入操作
示例
MERGE INTO CAI_GRKMX a USING TMP_IMPHD b
ON (a.SPID=b.SPID AND a.PIHAO=b.PIHAO AND instr(b.pihao,a.djbh)>0)
WHEN MATCHED THEN
UPDATE SET a.HDUID=b.MXUID,a.HDBZ=1;
COMMIT;
来自网上更好的说明
MERGE INTO dept60_bonuses b
USING (
SELECT employee_id, salary, department_id
FROM hr.employees
WHERE department_id = 60
) e
ON (b.employee_id = e.employee_id)
-- 当符合关联条件时
WHEN MATCHED THEN
-- 将奖金为0的员工的奖金调整为其工资的20%
UPDATE
SET b.bonus_amt = e.salary * 0.2
WHERE b.bonus_amt = 0
-- 删除工资大于7500的员工奖金记录
DELETE
WHERE (e.salary > 7500)
-- 当不符合连接条件时
WHEN NOT MATCHED THEN
-- 将不在部门为60号的,且不在dept60_bonuses表的用工信息插入,并将其奖金设置为其工资的10%
INSERT
(b.employee_id, b.bonus_amt)
VALUES
(e.employee_id, e.salary * 0.1)
WHERE (e.salary < 7500)
方法二:作为多表级联更新的另外一种写法
UPDATE
(SELECT a.HDUID,b.MXUID,HDBZ
FROM CAI_GRKMX a
INNER JOIN TMP_IMPHD b ON a.SPID=b.SPID AND a.PIHAO=b.PIHAO AND instr(b.pihao,a.djbh)>0
)
SET HDUID=MXUID,HDBZ=1
ORACLE多表级联更新( MERGE、UPDATE FROM JOIN替代语句)的更多相关文章
- Oracle 外键级联更新
Oracle数据库中,外键约束只允许级联删除,不允许级联更新,因此,如果想要实现主表数据更新后,子表外键自动更新,只能取消外键关系,通过前端程序来维护实现完整引用,一个代替的解决方案是使用延迟约束和触 ...
- ORACLE 两表关联更新三种方式
不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...
- sql-update语句多表级联更新
在数据表更新时,可能会出现一种情况,就是更新的内容是来源于其他表的,这个时候,update语句中就加了from,下面为一个范例: update a set a.name=b.name,a.value= ...
- 多表更新:update,join
1.多表更新: 下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法. 前期准备工作: update join_teacher_class jo ...
- oracle多表关联多字段update
多表关联多字段update 有代码有J8: update spatial_references set( auth_name, auth_srid, falsex, falsey, xyunits, ...
- Oracle 多表关联更新
drop table course; create table course ( id integer, teacherNo integer, teacherDesc ), teacherName ) ...
- 两表关联更新,用于update 回滚
create table test1 as select * from dba_objects; create table test2 as select * from dba_objects; cr ...
- Oracle 查看表空间的大小及使用情况sql语句
--1.查看表空间的名称及大小 )), ) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.t ...
- oracle查看表空间的大小及使用情况sql语句
--------------------------tablespace------------------------------------------------ 1.//查看表空间的名称及大小 ...
- Oracle\MS SQL Server Update多表关联更新
原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...
随机推荐
- markdown小小白常用语法
第一次用vscode写笔记去同步Cnblog,不知道写啥就记点常用的md语法吧 1. 标题怎么写? 利用"#" + " " 即可实现第几节标题(其中'/',表转 ...
- python匹配一个最近时间的文件
def new_report(bakdir,str): files = os.listdir(bakdir) lists = [] #列出目录的下所有文件和文件夹保存到lists for f in f ...
- Java语言的动态性支持
一.脚本语言的支持 JSR 223中规范了在Java虚拟机上运行的脚本语言与Java程序之间的交互方式.JSR 233是JavaSE6的一部分,在Java表中API中的包是javax.scri ...
- vue结合element UI做checkbox全选的tree结构
由于element UI中的tree可能不能满足项目中的样式需求,所以自己动手结合element中的checkbox全选功能实现了一个符合项目需求的tree.效果如下: html部分: <tem ...
- MySQL 8.0 为什么会放弃查询缓存?
什么是查询缓存? 查询缓存就是将一次查询结果存储在内存中,假如下一次查询结果在内存中,就直接在内存中读取. 设计初衷 当然是提高性能,通过缓存来减少解析器.优化器.存储引擎的执行时间. MySQL查询 ...
- go build tags使用
转载请注明出处: 在 Go 语言中,构建标签(Build Tags)是一种用于条件编译的机制,可以帮助开发者根据不同的条件选择性地编译特定的代码块.它们在处理多平台和多环境的代码时特别有用,例如为不同 ...
- Redis应用—4.在库存里的应用
大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 + 渐进式写入 + 写入失败 ...
- 中电金信:金Gien乐道 | 6月热门新闻盘点 回顾这一月的焦点事件
- LocalDateTime 简述
Java 8 更新的部分内容中,有一部分代替了以往比较难用的 java.util.Date 类,并且创建了一套新的时间类型,该类型为: java.time.LocalDateTime. LocalDa ...
- NJU ICS2024 PA 作业心得(三)
NJU ICS2024 PA 作业心得(三) 需要参考的内容 RISC-V ABIs Specification:是一组规则和规范,定义了在 RISC-V 架构上编写和链接程序的方式.它确保了不同语言 ...