📅  最后修改于: 2023-12-03 15:09:43.067000             🧑  作者: Mango
INNER JOIN
连接的 MySQL UPDATE - SQL在 MySQL 中,使用 UPDATE
命令可以更新一张表中的某些行的数据。有时候,需要将多张表的数据进行更新操作。这时候,就可以使用 INNER JOIN
连接来实现跨表更新操作。
以下是使用 INNER JOIN
连接实现跨表更新操作的基本语法:
UPDATE table1
INNER JOIN table2 ON table1.column1 = table2.column2
SET table1.column3 = new_value
WHERE condition;
UPDATE
:要更新的表名称。table1
:要更新的表。table2
:要连接的表。column1
和 column2
:连接两个表的列。SET
:要修改的列及其新值。column3
:要修改的列。new_value
:该列的新值。WHERE
:筛选要更新的行。假设有两张表 orders
和 customers
,它们的表结构如下:
orders
| order_id | customer_id | order_date | total | | --- | --- | --- | --- | | 1 | 100 | 2022-07-01 | 500 | | 2 | 100 | 2022-07-05 | 300 | | 3 | 200 | 2022-07-03 | 200 | | 4 | 300 | 2022-07-07 | 150 |
customers
| customer_id | customer_name | city | | --- | --- | --- | | 100 | John | New York | | 200 | Mike | Los Angeles | | 300 | Lisa | Chicago |
我们想要将总订单金额超过 400 美元的订单所对应的客户所在城市设置为 "New York"。可以使用以下 SQL 语句实现:
UPDATE orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
SET customers.city = 'New York'
WHERE orders.total > 400;
运行后,customers
表的数据如下所示:
| customer_id | customer_name | city | | --- | --- | --- | | 100 | John | New York | | 200 | Mike | Los Angeles | | 300 | Lisa | Chicago |
由于 orders
表中只有 customer_id
为 100 的客户所对应的订单金额超过了 400 美元,所以只有这个客户所在的城市被更新为了 "New York"。
使用 INNER JOIN
字句将多张表进行连接,可以方便地实现跨表更新操作。程序员在处理多张表关联的更新操作时,可以使用该方法有效地提高代码效率。