I have two tables, one is called original_table and the other is table_with_additional_column.
table_with_additional_column is a subset of original_table but with an additional column called sequenceNr. I want to merge the two tables such that I can get all rows from original_table with sequenceNr set to NULL where the rest of the column values don´t match the ones in table_with_additional_column. I would like to replace the rows in original_table instead of just inserting the rows from table_with_additional_column
Here´s an example:
original_table
| column_1 | column_2 | column_3 | 
|---|---|---|
| aaa | bbb | ggg | 
| ccc | ddd | hhh | 
| eee | fff | iii | 
table_with_additional_column
| column_1 | column_2 | column_3 | sequencenr | 
|---|---|---|---|
| aaa | bbb | ggg | 1 | 
| ccc | ddd | hhh | 2 | 
What I want as result of merge:
| column_1 | column_2 | column_3 | sequencenr | 
|---|---|---|---|
| aaa | bbb | ggg | 1 | 
| ccc | ddd | hhh | 2 | 
| eee | fff | iii | NULL | 
Here´s my query so far:
SELECT 
  column_1, column_2, column_3, sequenceNr
FROM (
    SELECT 
        table_A.*, 
        table_B.sequenceNr
    FROM table_A, table_B
) AS table_with_additional_column
RIGHT JOIN original_table ON original_table.column_1 = table_with_additional_column.column_1
AND original_table.column_2 = table_with_additional_column.column_2 
AND original_table.column_3 = table_with_additional_column.column_3
I would appreciate some help with the SQL query regarding how to merge the two tables. Thanks in advance.
Advertisement
Answer
You can use left join for this:
select ot.*, twac.sequencenr
from original_table ot left join
     table_with_additional_column twac
     on ot.col1 = twac.col1 and
        ot.col2 = twac.col2 and
        ot.col3 = twac.col3;
Your description pretty much explains exactly what left join does.