我有一张表,暂称之为table1,其中两列的数据已经被破坏了。
幸运的是,我有一份旧的备份表。
在旧的备份表中,涉及这两个列的值是正确的,但其他列的值已经过时,因此我不能简单地导入整个备份文件。
所以我将其导入另一张表,称为table2。每条记录都有一个相同的id在两个表中。
因此,基本上我需要一条查询语句,可以遍历table1中的每条记录,并使用来自table2对应的值更新column1和column2。
我有一张表,暂称之为table1,其中两列的数据已经被破坏了。
幸运的是,我有一份旧的备份表。
在旧的备份表中,涉及这两个列的值是正确的,但其他列的值已经过时,因此我不能简单地导入整个备份文件。
所以我将其导入另一张表,称为table2。每条记录都有一个相同的id在两个表中。
因此,基本上我需要一条查询语句,可以遍历table1中的每条记录,并使用来自table2对应的值更新column1和column2。
原始表是table1,备份表是table2。
UPDATE table1 t1 JOIN table2 t2 ON t1.id = t2.id
SET t1.col1 = t2.col1, t1.col2 = t2.col2, ...
update table1 t set
column1 = (select column1 from old_table where id = t.id),
column2 = (select column2 from old_table where id = t.id);
不需要任何特殊/聚合函数,因为ID匹配将精确命中一行。
我认为你可以尝试这样做:
UPDATE table1 SET table1field = (SELECT MAX(table2.table2field) FROM table2 WHERE table1.table1field = table2.table2field)