表结构、测试数据

drop table t1;
drop table t2;
CREATE TABLE T1
(
name VARCHAR2(10)
, code VARCHAR2(10)
);
ALTER TABLE t1 ADD PRIMARY KEY(name);
insert into t1 (name,code) values('lw01','01');
insert into t1 (name,code) values('lw02','02'); CREATE TABLE T2
(
name VARCHAR2(10)
, code VARCHAR2(10)
);
ALTER TABLE t2 ADD PRIMARY KEY(name);
insert into t2 (name,code) values('lw03','03');
insert into t2 (name,code) values('lw02','lw02');
insert into t2 (name,code) values('lw01','lw01');

需求:

参照T2表,修改T1表,修改条件为两表的name列内容一致。

方式1:update

UPDATE T1 t1
SET t1.code =
(select t2.code from T2 t2 where t2.name = t1.name)
WHERE EXISTS (SELECT 1 FROM T2 t2 WHERE t2.name = t1.name);

如果同时更新多个字段可以参照以下语法:

UPDATE DEMO_T1 t1
SET (字段一,字段二,...) = (select 字段一,字段二,... from DEMO_T2 T2 where T2.FNAME = T1.FNAME)
WHERE EXISTS(SELECT 1 FROM DEMO_T2 T2 WHERE T2.FNAME = T1.FNAME);

方式2:内联视图更新

注意:需要取数据的表,该字段必是主键或者有唯一约束

UPDATE (select t1.code code1, t2.code code2
from t1 t1, t2 t2
where t1.name = t2.name) t
set code1 = code2;

方式3:merge

Oracle两表关联更新的更多相关文章

  1. ORACLE 两表关联更新三种方式

    不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...

  2. oracle 两表关联查询

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

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

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

  4. 两表关联更新数据——oracle

    from testb b where b.id=a.id) ; (where exists(select 1 from testb b where b.id=a.id):如果没有这个条件,不匹配的选项 ...

  5. Oracle 多表关联更新

    drop table course; create table course ( id integer, teacherNo integer, teacherDesc ), teacherName ) ...

  6. postgresql 两表关联更新

    UPDATE 要更新的表 SET 字段1 = cqt.字段1, 字段2 = cqt.字段2, FROM 数据来源表 cqt WHERE 要更新的表.bsm = cqt.bsm

  7. 两表关联更新,用于update 回滚

    create table test1 as select * from dba_objects; create table test2 as select * from dba_objects; cr ...

  8. Oracle\MS SQL Server Update多表关联更新

    原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...

  9. Oracle中如何实现Mysql的两表关联update操作

    在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...

  10. oracle多表关联删除的两种方法

    oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...

随机推荐

  1. 未配置Datasource时, 启动 SpringBoot 程序报错的问题

    SpringBoot will show error if there is no datasource configuration in application.yml/application.pr ...

  2. 【Unity3D】Shader常量、变量、结构体、函数

    1 源码路径 ​ Unity Shader 常量.变量.结构体.函数一般可以在 Unity Editor 安装目录下面的[Editor\Data\CGIncludes\UnityShader]目录下查 ...

  3. Idea 本人开发常用几款插件

    先说 idea装插件 首先,进入插件安装界面: 标注 1:显示 IntelliJ IDEA 的插件分类, All plugins:显示 IntelliJ IDEA 支持的所有插件: Enabled:显 ...

  4. 配置nginx反向代理

    最近在做一个前后分离的项目,前端用Vue,后台spring boot,使用nginx做反向代理.下面说一下如何配置: 启动spring boot项目,端口8110 启动nginx 修改nginx.co ...

  5. 《系列二》-- 6、从零开始的 bean 创建

    目录 createBean() 的面纱 createBean() 的承包者: doCreateBean() 总结 阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看 ...

  6. vue+antv g6+element-ui完整流程图

    最近一直在研究流程图相关的技术,一次在逛GitHub时发现了一个技术栈为vue+g6+element-ui的项目,基础功能完好,如node与edge的托拉拽,主界面如下:

  7. win32 - 将原始音频样本转换为wav文件

    需要先从麦克风中采样,代码样本可以参考官方示例: WASAPI Capture Shared Event Driven 官方示例采样10s, 我们需要在WriteWaveFile函数下添加生成原始音频 ...

  8. Unity学习笔记--数据持久化Json

    JSON相关 json是国际通用语言,可以跨平台(游戏,软件,网页,不同OS)使用, json语法较为简单,使用更广泛.json使用键值对来存储. 认识json文件 //注意字典类型存储时,键是以st ...

  9. 记一次 splice 导致 io.Copy 阻塞的排查过程

    记一次 splice 导致 io.Copy 阻塞的排查过程 简而言之,net.TCPConn 的 ReadFrom 零拷贝实现 splice 在 1.21.0 - 1.21.4 删除了 SPLICE_ ...

  10. context讲解

    context包 context包介绍 ​ 在go语言中,每个独立调用一般都会被单独的协程处理.但在处理一个请求时,往往可能需要在多个协程之间进行信息传递,甚至包括一层层地递进顺序传递,而且这种信息往 ...