根据mysql中另一个表中的值更新一个表中的多个列

Ale*_*der 2 mysql sql-update

我有一个表 A,其中包含 4000 万条记录。它有这样的结构

Id A B C
1 N O 10
1 N O 20
2 B G 15
2 B G 25
3 E U 50
3 E U 60
Run Code Online (Sandbox Code Playgroud)

我需要根据表 B 中的值(其中 id 是唯一的)更改表 A 中 A 列和 B 列中的值。表 B 看起来像这样

Id A B
1 V M
2 Q W
3 E U
Run Code Online (Sandbox Code Playgroud)

最终得到表A的结果

Id A B C
1 V M 10
1 V M 20
2 Q W 15
2 Q W 25
3 E U 50
3 E U 60
Run Code Online (Sandbox Code Playgroud)

由于 Id=3 在表 A 和 BI 中都是相同的,因此宁愿避免将这些记录从 B 写入到 A,认为这样会更有效吗?

我沿着这些思路思考

UPDATE tableA
SET A = (SELECT A
         FROM tableB
         WHERE tabelA.id = tableB.id)
Run Code Online (Sandbox Code Playgroud)

但不确定何时需要在同一步骤中更新多个列,以及仅在表 A 和表 B 之间的数据确实不同时才更新。

egg*_*yal 8

您可以使用多表UPDATE语法来连接表:

UPDATE tableA JOIN tableB USING (Id)
SET    tableA.A = tableB.A,
       tableA.B = tableB.B
Run Code Online (Sandbox Code Playgroud)

在sqlfiddle上查看它。

  • `USING (Id)` 可以替换为 `ON tableA.Id = tableB.Id` (5认同)