[英]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.