MySQL:将值从一个表复制到另一个表

时间:2015-03-15 19:03:01

标签: mysql

我有两个几乎相同的数据库表,其中包含相同的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的列中。

提前致谢。

2 个答案:

答案 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