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.