Search code examples
sqloracle-databasesql-updateinner-join

SQL insert data with inner join using oracle


New to SQL I have two tables table_A and table_B.

I want to add data into a specific column of table_A depending on a inner join on table_B. I am using Oracle, following this method my SQL looks like this :

I first tried that :

INSERT INTO table_A (target_column)
SELECT table_B.wanted_data 
FROM table_B INNER JOIN table_A ON table_B.someColumnB = table_A.someColumnA

Here the issue is that it would insert the data in new lines of my table_A and not in the existing lines.

So I tried that from the stackoverflow thread :

UPDATE(SELECT table_A.target_column, table_B.wanted_data
  FROM table_A
  INNER JOIN table_B
  ON table_A.someColumnA = table_B.someColumnB
)
SET table_A.target_table = table_B.wanted_data

But it is not working either "SQL command not properly ended"

EDIT : target_column and wanted_data have the same name in my data set, not sure if it changes anything.


Solution

  • SQL Sever:

    UPDATE a 
    SET    a.target_column = b.wanted_data 
    FROM   table_A a 
    JOIN   table_B b 
    ON     b.someColumnB = a.someColumnA
    

    Oracle:

    UPDATE
    (
        SELECT     b.wanted_data   AS wanted_data
                  ,a.target_column AS old_data
        FROM       table_A a
        INNER JOIN table_B b
        ON         b.someColumnB = a.someColumnA
    )   c
    SET c.old_data = c.wanted_data