繁体   English   中英

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

[英]MySQL: Copy values from one to another table

我有两个几乎相同的数据库表,它们的列和行数都相同。

它们每行都有唯一的ID,这在两个表中都相同。

第一个表在某些列上缺少某些值。 如何将值从table2中的行复制到table1中的行? 这些列具有相同的名称,但表1中的值为空,但表2中的值为空。 我想将所有值从table2中的某些列复制到table1中的相同列。

这是一张有超过一百万行的大表。

例:

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的列。

提前致谢。

在MySQL中,您可以使用联接使用另一个表中的值更新表:

UPDATE table1 t1
JOIN table2 t2
    ON t1.id = t2.id
SET t1.homepage = t2.homepage,
    t1.name = t2.name

肮脏的自定义查询,要求您添加所有字段,但是可以解决这个问题:

UPDATE table1
SET
   field1 = ISNULL(t1.field1, t2.field1),
   field2 = ....
FROM
   table1 t1
   INNER JOIN table2 t2 ON t1.Id = t2.Id

如果一次更新100万行太多,则可以尝试使用where句柄分批进行:

 WHERE
    t1.Id BETWEEN @batchStart AND @batchEnd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM