简体   繁体   中英

MySQL copy column from different tables, insert at top of table

I'm trying to merge a couple tables together to consolidate the data, but when I try to insert a column from one table to the other, the query I'm using inserts the records after the last currently existing record in the table. There are a ton of questions about duplicating columns, but they all seem to be starting with an empty table.

INSERT INTO newTable( newColumn ) SELECT oldColumn FROM oldTable

How do I modify this query to insert the rows at the beginning of the table instead of the end?

Visual representation of what is happening (left) vs. what I want to happen (right):

+--------+--------+------------+    +--------+--------+------------+
| ID     | Column |  newColumn |    | ID     | Column |  newColumn |
+--------+--------+------------+    +--------+--------+------------+
| 1      | 12345  |            |    | 1      | 12345  |    12345   |
| 2      | 12345  |            |    | 2      | 12345  |    12345   |
| 3      | 12345  |            |    | 3      | 12345  |    12345   |
| 4      |        |    12345   |    +--------+--------+------------+
| 5      |        |    12345   |
| 6      |        |    12345   |
+--------+--------+------------+

As mentioned in the comments you need an UPDATE statement not an INSERT statement:

UPDATE newTable 
    JOIN oldTable
    ON newTable.id = oldTable.id
SET newcolumn = oldcolumn;

A tested example may be seen here: http://sqlfiddle.com/#!2/77724/1

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