Oracle
 sql >> Datenbank >  >> RDS >> Oracle

wie man zwei Tabellen zusammenführt, um die letzten neuen Zeilen aus Tabelle 2 und den Rest aus Tabelle 1 zu erhalten

Verwenden Sie einfach NOT IN um die Datensätze zu finden, die nicht mit new_table g übereinstimmen , und sammeln Sie mit den von INNER JOIN abgerufenen Datensätzen

SELECT f.id_hist, f.producto, f.price
FROM TABLE(fnc_historical('JAP')) f
WHERE f.id_hist NOT IN
(SELECT DISTINCT f.id_hist
FROM TABLE(fnc_historical('JAP')) f
    inner join new_table g on (f.id_new = g.id_hist)
)
UNION
SELECT f.id_hist, f.producto, g.new_price
FROM TABLE(fnc_historical('JAP')) f
    inner join new_table g on (f.id_new = g.id_hist)