【Oracle数据库】两个表关联更新

【Oracle数据库】两个表关联更新

1.准备


2.直接更新

2.1 SQL

sql 复制代码
update a1 set (name,age) = (select name,age from b1 where a1.ID = b1.ID)

2.2 结果

2.3 总结

根据执行结果可以看到a1表里面有的而b1表里面没有的直接更新为null
原因在更新的时候没有加更新的范围

3.修改更新

3.1SQL

sql 复制代码
update a1 set (name,age) = (select name,age from b1 where a1.ID = b1.ID)
where exists (select 1 from b1 where  a1.ID = b1.ID)

3.2结果

3.3总结

更新增加了更新的条件,那就是a1和b1都有相同的id那么就有select 1,那么exists就会返回true;最后进行更新操作

exists的作用是检查子查询的结果是否为真,如果子查询为true则执行外面的SQL语句。 exists不返回数据只返回true 或false

4.总结

如果需要同时更新多个字段,如下所示:

UPDATE 表1 t1

SET (字段一,字段二,...) = (select 字段一,字段二,... from 表2 t2 where t2.关联字段 = t1.关联字段 and 其他条件)

WHERE EXISTS(SELECT 1 FROM 表2 t2 WHERE t2.关联字段 = t1.关联字段 and 其他条件);

相关推荐
旋风菠萝11 分钟前
项目复习(1)
java·数据库·八股·八股文·复习·项目、
w236173460114 分钟前
Django框架漏洞深度剖析:从漏洞原理到企业级防御实战指南——为什么你的Django项目总被黑客盯上?
数据库·django·sqlite
2302_8097983241 分钟前
【JavaWeb】MySQL
数据库·mysql
drowingcoder1 小时前
MySQL相关
数据库
Musennn2 小时前
MySQL刷题相关简单语法集合
数据库·mysql
Think Spatial 空间思维2 小时前
【HTTPS基础概念与原理】TLS握手过程详解
数据库·网络协议·https
laowangpython3 小时前
MySQL基础面试通关秘籍(附高频考点解析)
数据库·mysql·其他·面试
mooyuan天天3 小时前
SQL注入报错“Illegal mix of collations for operation ‘UNION‘”解决办法
数据库·web安全·sql注入·dvwa靶场·sql报错
运维-大白同学3 小时前
go-数据库基本操作
开发语言·数据库·golang
R-sz3 小时前
通过从数据库加载MinIO配置并初始化MinioClient,spring boot之Minio上传
数据库·oracle