我有两个几乎相同的数据库表,其中包含相同的colummns和行数。
它们每行都有一个唯一的ID,在两个表中都是相同的。
第一个表在某些列上缺少某些值。 如何将table2中某行的值复制到table1中的行? 列具有相同的名称,但table1中的值为空,但不是table2。我想将table2中某些列的所有值复制到table1中的相同列。
这是一张超过100万行的大桌子。
示例:
Table 1 Row 5:
id = 5
orgnr = 932942
homepage = NULL
name = NULL
Table 2 Row 5:
id = 5
orgnr = 932942
homepage = 'www.domain.com'
name = 'John Smith'
我想将主页和名称中的值复制到table1的列中。
提前致谢。
答案 0 :(得分:2)
在MySQL中,您可以使用联接来使用另一个表中的值更新表:
UPDATE table1 t1
JOIN table2 t2
ON t1.id = t2.id
SET t1.homepage = t2.homepage,
t1.name = t2.name
答案 1 :(得分:1)
脏的自定义查询,要求您添加所有字段,但可以做到这一点:
UPDATE table1
SET
field1 = ISNULL(t1.field1, t2.field1),
field2 = ....
FROM
table1 t1
INNER JOIN table2 t2 ON t1.Id = t2.Id
如果一次性更新1m行太多,您可以尝试使用where clase批量执行:
WHERE
t1.Id BETWEEN @batchStart AND @batchEnd