mysql根据一个表的数据更新另一个表数据的SQL写法

ql 中更新表数据的通用方法包括:使用 join 语句,匹配两个表并更新目标表的指定列;使用子查询,获取源表中匹配行的值并更新目标表;使用 merge 语句(mysql 8.0 及更高版本),合并两个表并按条件更新或插入数据。

 

根据一个表的数据更新另一个表数据的 SQL 写法

最近大家都在看

MySQL update 命令的详细用法

怎么查看mysql的锁表

mysql如何将字符串转换成数字

方法一:使用 JOIN 语句

1

2

UPDATE table2 SET column2 = table1.column1

JOIN table1 ON table2.id = table1.id;

方法二:使用子查询

1

2

3

4

5

6

UPDATE table2

SET column2 = (

    SELECT column1

    FROM table1

    WHERE table2.id = table1.id

);

方法三:使用 MERGE 语句(MySQL 8.0 及更高版本)

1

2

3

4

5

MERGE INTO table2 AS t2

USING table1 AS t1

ON t2.id = t1.id

WHEN MATCHED THEN

  UPDATE SET column2 = t1.column1;

示例

假设有以下两个表:

  • table1:包含具有 id 和 name 列的数据
  • table2:包含具有 id 和 description 列的数据

要使用 table1 中的 name 更新 table2 中的 description,可以使用以下 SQL 查询:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

-- 使用 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;

 
posted @ 2024-11-06 16:24  星畔  阅读(215)  评论(0编辑  收藏  举报