我有一个tableA,它拥有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
我需要根据tableB中的值(其中id是唯一的)更改tableA中A列和B列中的值。表B看起来像这样
Id A B
1 V M
2 Q W
3 E U
因此以表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
由于Id = 3在表A和表B中是相同的,我宁愿避免从B写入A到那些记录,认为这样会更有效吗?
我按照这些思路思考
UPDATE tableA
SET A = (SELECT A
FROM tableB
WHERE tabelA.id = tableB.id)
但不确定何时我需要在同一步骤中更新多个列,并且仅在tableA和tableB之间的数据确实不同时才更新。
答案 0 :(得分:2)
您可以使用多表UPDATE
语法来连接表:
UPDATE tableA JOIN tableB USING (Id)
SET tableA.A = tableB.A,
tableA.B = tableB.B
在sqlfiddle上查看。
答案 1 :(得分:0)
Update A a
inner join B b on a.id = b.id
set a.A = b.A,
a.B = b.B
WHERE a.A <> b.A and a.B <> b.B
答案 2 :(得分:0)
为此查询使用此查询,但是您必须根据需要设置位置条件。
update tabe2 set subject_id = (SELECT GROUP_CONCAT(sub_id SEPARATOR ', ') as sub_id FROM tabe1)