Home > database >  Join tables with same columns
Join tables with same columns

Time:01-14

I load data on daily basis from python into a mysql database and a table "temp_table". I want to join this into the "total_table" so that new values get added to the "total_table"

 -----Temp-table------- 
 ---------------------- 
| id | Price    | Name |
 ---- ---------- ------ 
| 3  | 1.000    | C    |
| 4  | 1.500    | D    |
| 5  | 1.200    | E    |
| 6  | 2.000    | F    |


 -----Total-table------ 
 ---------------------- 
| id | Price    | Name |
 ---- ---------- ------ 
| 1  | 1.100    | A    |
| 2  | 1.600    | B    |
| 3  | 1.000    | C    |
| 4  | 1.500    | D    |

result after joining

 -----Total-table------ 
 ---------------------- 
| id | Price    | Name |
 ---- ---------- ------ 
| 1  | 1.100    | A    |
| 2  | 1.600    | B    |
| 3  | 1.000    | C    |
| 4  | 1.500    | D    |
| 5  | 1.200    | E    |
| 6  | 2.000    | F    |

I have tried LEFT JOIN. Don't get any errors in python but my total-table is not updated

 SELECT * FROM total_table
            LEFT JOIN
            temp_table
            ON total_table.id = temp_table.id

CodePudding user response:

Hey I think you are looking for the UNION operator:

SELECT * FROM total_table
UNION
SELECT * FROM temp_table

CodePudding user response:

INSERT IGNORE INTO total_table
SELECT *
FROM temp_table

The IGNORE option will make it skip the rows in temp_table that duplicate the unique key in total_table.

CodePudding user response:

You can perform an UPSERT of the temp data.
Via an INSERT ON DUPLICATE KEY UPDATE statement.

Note that the target table does require a primary key or unique index for this.

INSERT INTO total_table
(id, Price, Name)
SELECT 
 id, Price, Name 
FROM temp_table tmp
ON DUPLICATE KEY UPDATE
  Price = tmp.Price
, Name = tmp.Name;
select * 
from total_table
order by id;
id Price Name
1 1.100 A
2 1.600 B
3 1.000 C
4 1.500 D
5 1.200 E
6 2.000 F

db<>fiddle here

  •  Tags:  
  • Related