简体   繁体   中英

MySQL: Copy values from one to another table

I have two almost identical database tables with the presice same colummns and number of rows in them.

They both have a unique ID per row which is the same in both tables.

The first table is missing some values on some columns. How can i copy values from a row in table2, to row in table1? The columns have the same name, but the value is empty in table1, but not table2. I want to copy over all values from some columns in table2 to same columns in table1.

It's a big table with over 1 million rows.

Example:

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'

I want to copy values from homepage and name to table1's columns.

Thanks in advance.

In MySQL you can use joins to update a table with values from another table:

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

Dirty custom query that requires you to add all fields but could do the trick:

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

If updating the 1m rows in one go is too much you can try to do it in batches by using a where clase:

 WHERE
    t1.Id BETWEEN @batchStart AND @batchEnd

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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