Daten die nicht mit Abfrage übereinstimmen bekommen

werdas34

Benutzer
Beiträge
12
Hallo,
ich weiß der Titel ist nicht gut gewählt, aber mir fiel nichts bessers ein.

Problem:
Ich bekomme Daten, entweder kann ich meine Tabelle damit updaten oder es gibt sie nicht in der Tabelle, dann füge ich sie neu in die Tabelle hinzu.
So an sich ganz einfach.

Meine Frage wäre wie macht man das am besten? Dachte an MINUS aber dann muss die Abfrage auch wieder so gestellt sein (where ... and ... and ... ).

Was ich mir vorstelle, ich bekomme die Daten (aus einer Excel-Datei) und update alle passenden Werte.
1) Ich merke mir welche IDs nicht passen (durch Liste?) und inserte die gemerketn Werte hinzu oder
2) ich merke mir was die Update Abfrage auspuckt und dessen Ergebnis mache ich ein MINUS ->
select * from table
MINUS
select * from gemerkt

Mir wäre wichtig, das jeder Wert entweder geupdatet oder hinzugefügt wird. Nicht beides auf einmal oder gar nichts von beiden.

mfg werdas34
 
Werbung:
Dafür ist MERGE gedacht. Wenn Du die Daten in eine Zwischentabelle ("staging table") importieren kannst, dann könnte das so aussehen:
Code:
merge into target_table tt
using staging_table st on (st.id = tt.id)
when matched then 
update
  set some_column = st.come_column,
      other_column = st.other_column
when not matched then
insert (id, some_column, other_column)    
values (st.id, st.some_column, st.other_column)
 
Zurück
Oben