📅  最后修改于: 2023-12-03 15:17:47.327000             🧑  作者: Mango
在实际的开发中,我们可能会遇到需要从一个表更新另一个表的多列的情况。MySQL 提供了 UPDATE 的语法可以实现这个功能。
UPDATE table1
SET column1 = (SELECT columnA FROM table2 WHERE table2.id = table1.id),
column2 = (SELECT columnB FROM table2 WHERE table2.id = table1.id),
...
WHERE condition;
以上是 UPDATE 的语法结构,可以通过子查询来实现从另一个表更新一个表的多列。
具体解释如下:
UPDATE
:表示要更新的表名。SET
:表示要更新的列名和对应的值,多列需要使用逗号分隔。column1
、column2
、...
:表示要更新的列名。(SELECT columnA FROM table2 WHERE table2.id = table1.id)
、(SELECT columnB FROM table2 WHERE table2.id = table1.id)
、...
:表示子查询语句,用于从另一个表获取对应列的值。table1
、table2
:表示要更新的表和要获取数据的表。WHERE
:表示更新的条件,需要确保更新的数据与要更新的表的数据是对应的。假设有两张表 table1
和 table2
,它们的结构如下:
-- table1 表结构
CREATE TABLE table1 (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
salary FLOAT
);
-- table2 表结构
CREATE TABLE table2 (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
salary FLOAT
);
现在我们需要从 table2
表更新 table1
表的 name
、age
、salary
列,更新的条件是 id
列相同。
可以使用以下 SQL 语句实现:
UPDATE table1
SET name = (SELECT name FROM table2 WHERE table2.id = table1.id),
age = (SELECT age FROM table2 WHERE table2.id = table1.id),
salary = (SELECT salary FROM table2 WHERE table2.id = table1.id);