sql 中更新表數(shù)據(jù)的通用方法包括:使用 join 語句,匹配兩個(gè)表并更新目標(biāo)表的指定列;使用子查詢,獲取源表中匹配行的值并更新目標(biāo)表;使用 merge 語句(mysql 8.0 及更高版本),合并兩個(gè)表并按條件更新或插入數(shù)據(jù)。
根據(jù)一個(gè)表的數(shù)據(jù)更新另一個(gè)表數(shù)據(jù)的 SQL 寫法
方法一:使用 JOIN 語句
UPDATE table2 SET column2 = table1.column1 JOIN table1 ON table2.id = table1.id;
登錄后復(fù)制
方法二:使用子查詢
UPDATE table2 SET column2 = ( SELECT column1 FROM table1 WHERE table2.id = table1.id );
登錄后復(fù)制
方法三:使用 MERGE 語句(MySQL 8.0 及更高版本)
MERGE INTO table2 AS t2 USING table1 AS t1 ON t2.id = t1.id WHEN MATCHED THEN UPDATE SET column2 = t1.column1;
登錄后復(fù)制
示例
假設(shè)有以下兩個(gè)表:
table1:包含具有 id 和 name 列的數(shù)據(jù)
table2:包含具有 id 和 description 列的數(shù)據(jù)
要使用 table1 中的 name 更新 table2 中的 description,可以使用以下 SQL 查詢:
-- 使用 JOIN 語句 UPDATE table2 SET description = table1.name JOIN table1 ON table2.id = table1.id; -- 使用子查詢 UPDATE table2 SET description = ( SELECT name FROM table1 WHERE table2.id = table1.id ); -- 使用 MERGE 語句(MySQL 8.0 及更高版本) MERGE INTO table2 AS t2 USING table1 AS t1 ON t2.id = t1.id WHEN MATCHED THEN UPDATE SET description = t1.name;
登錄后復(fù)制