什么是多表关联更新?
在一个执行SQL的UPDATE 语句中,基于另一个表或多个表中的数据,来更新目标表中的数据称之为多表关联更新。
很难理解?
想象一下,你有一个 orders 表(订单表)和一个 customers 表(客户表)。现在需要将所有来自“上海”的客户的订单状态更新为“优先处理”。如果没有多表关联更新,你可能需要:
1.先执行一个 SELECT 查询,找出所有上海客户的ID。
2.再根据这些ID,执行一个 UPDATE 语句去更新 orders 表。
3.而使用多表关联更新,只需一条SQL语句即可完成。
而现在我们有多表关联更新了,只要一条SQL语句即可完成!
怎么操作?
准备一张orders表,字段包括id(身份码)、address(收货地)
再准备一张customers表,包括id(身份码)、 name(姓名)、degree(优先级)
然后自行补充5条信息:
回到刚才那个问题,
如何更改所有来自“上海”的客户的订单状态更新为“优先处理”?
方法1:INNER JOIN
UPDATE orders o JOIN customers c ON o.id = c.id SET o.degree = '高' WHERE c.address = '上海';
完成需求:
方法2:UPDATE
UPDATE orders o, customers c SET o.degree = '高' WHERE o.id = c.id AND c.address = '上海';
方法3:
LEFT JOIN UPDATE orders o LEFT JOIN customers c ON o.id = c.id SET o.degree = '高' WHERE c.address = '上海';
方法4:子查询
UPDATE orders SET degree = '高' WHERE id IN ( SELECT id FROM customers WHERE address = '上海' );
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程