oracle多表联合查询更新,ORACLE 两表关联更新三种方式

不多说了,我们来做实验吧。

创建如下表数据

select * from t1 ;

52740ef195a1684a00fc74deb209347a.png

select * from t2;

772f2ff26cf34f8d8d04709a2eac82f6.png

现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致。

方式1,update

常见陷阱:

UPDATE T1

SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME)

执行后T1结果如下:

3b0e5cfc457d2dfa4886c7494dc51e43.png

有一行原有值,被更新成空值了。

正确写法:

UPDATE T1

SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME)

WHERE EXISTS(SELECT 1 FROM T2 WHERE T2.FNAME = T1.FNAME);

60399e9969ac60e7d0efe25d88b89070.png

方式2:内联视图更新

UPDATE (

select t1.fmoney fmoney1,t2.fmoney fmoney2 from t1,t2 where t1.fname = t2.fname

)t

set fmoney1 =fmoney2;

方式3:merge更新

merge into t1

using (select t2.fname,t2.fmoney from t2) t

on (t.fname = t1.fname)

when matched then

update set t1.fmoney = t.fmoney;

多表连接的三种方式 HASH MERGE NESTED

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP------------------------------------------------------20 ...

多表连接的三种方式详解 hash join、merge join、 nested loop

在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式.多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪 ...

oracle 两表关联查询

oracle 两表关联查询 CreationTime--2018年7月4日17点27分 Author:Marydon 情景描述 查询学生表student,sname,sex,age信息及所在班级c ...

oracle 插入表数据的4种方式

1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...

Python - Django - ORM 多对多表结构的三种方式

多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

python 获取表单的三种方式

条件:urls.py文件中配置好url的访问路径.models.py文件中有Business表. 在views.py文件中实现的三种方式: from app01 improt models def b ...

Python交换a,b两个数值的三种方式

# coding:utf-8 a = 1 b = 2 # 第一种方式 # t = a # 临时存放变量值 # a = b # b = t # 第二种方式 # a = a + b # a的值已经不是原始 ...

Oracle两表关联,只取B表的第一条记录

背景:  A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 首先想到了直接写个带排序的子查询去匹配外围的值,从这个结果集中只要第一条,但是经过验证发现, ...

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP

在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式. 之前打算在sqlplus中用执行计划的,但是格式看起来有点乱,就用Toad 做了3个截图. 从3张图里我们看到了几点 ...

随机推荐

Atitit.病毒木马程序的感染 传播扩散 原理

Atitit.病毒木马程序的感染 传播扩散 原理 1. 从木马的发展史考虑,木马可以分为四代 1 2. 木马有两大类,远程控制  vs  自我复制传播1 3. 自我复制2 3.1. 需要知道当前cpu ...

navigationBar设置透明度

将NavigationBar设置透明(仅将指定视图控制器进行透明处理),步骤如下:1.在视图控制器的头文件中实现UINavigationControllerDelegate,例如:@interface ...

CreateProcessW记录

STARTUPINFO si = { sizeof(si) };  PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW;  si.wSh ...

ASP.NET MVC+Bootstrap个人博客之打造清新分页Helper(三)

有点另类,分页直接是在后台拼接好html,然后发送到前台的: 1. 分页容器: