【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)

你可能感兴趣的:(sql,oracle,数据库)