【Oracle】在PL/SQL中使用Update语句修改多个表

前言

这篇文章我们实现一下在数据库中使用SQL语句来修改多个表之间的数据

需求演示

student表,里面有idname <====> teacher表,里面有t_idstu_idstu_name(这个字段下没有数据)

我们的需求就是将student表中的name赋值给teacher表的stu_name

案例

Oracle修改语句如下:

UPDATE teacher SET stu_name = (SELECT name FROM student WHERE student .id = teacher.stu_id);

上面这条SQL语句执行的时候会有问题,如果老师表中的stu_id和学生表中的id不一致对应的话,会返回NULL,导致语句执行失败,为了避免数据不一致,我们来更新一下这条SQL

注:这条SQL只允许在所有ID数量且全部一致下执行,否则会报错

更新后的SQL

UPDATE teacher SET stu_name = (SELECT name FROM student WHERE student .id = teacher.stu_id)
WHERE EXISTS (SELECT * FROM student WHERE student.id = teacher.stu_id);

我们只需要在原有SQL上添加EXISTS 条件即可,它不会返回任何数据,只返会布尔值(true/false),如果为false则我们上面的修改条件不会执行它。

在执行修改语句的时候,不要使用别名来代替,尽量使用完整表名来。 例如(√:student.id,×:s.id)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值