【问题标题】:MySQL: Copy values from one to another tableMySQL:将值从一个表复制到另一个表
【发布时间】:2015-05-17 20:41:21
【问题描述】:

我有两个几乎相同的数据库表,其中列和行数相同。

它们每行都有一个唯一的 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 的列中。

提前致谢。

【问题讨论】:

    标签: mysql


    【解决方案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 类批量更新:

     WHERE
        t1.Id BETWEEN @batchStart AND @batchEnd
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2012-06-09
        • 1970-01-01
        • 2011-11-21
        • 2012-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多