2 Tabellen zusammenführen

Hi,

ich habe ein Problem wo ich nicht so recht weiterkomme:
Ich habe 2 Tabellen mit jeweils 3 Spalten. Die meisten Datensätze sind identisch, allerdings hat Tabelle 2 ein paar mehr. Nun möchte ich eine Abfrage nutzen, bei der folgendes gemacht wird:

Vergleiche Spalte2.Tabelle1 mit Spalte2.Tabelle 2 - wenn Eintrag gleich dann mach nix, wenn Eintrag in Tabelle2 vorhanden und in Tabelle 1 nicht, dann lege diesen in Tabelle1 an - und zwar nicht ans Ende der Tabelle1 sondern an die Stelle, wo der Datensatz auch in Tabelle2 steht.

Wie macht man das am besten - nehme ich in diesem Fall eine JOIN, oder eigenet sich MERGE besser?

Schonmal vielen Dank und viele Grüße

blablub

Tabellen haben intern keine Ordnung - das kommt erst beim Select mittels ORDER BY.

Wie macht man das am besten - nehme ich in diesem Fall eine JOIN, oder eigenet sich MERGE besser?

Schonmal vielen Dank und viele Grüße

blablub


test=*# select * from tab1;
 col1 | col2 | col3        
------+------+------       
    1 |    1 |    1        
    2 |    2 |    2
    3 |    3 |    3
(3 Zeilen)

Zeit: 0,304 ms
test=*# select * from tab2;
 col1 | col2 | col3
------+------+------
    1 |    1 |    1
    2 |    2 |    2
    3 |    3 |    3
    4 |    4 |    4
    5 |    5 |    5
    6 |    6 |    6
(6 Zeilen)

Zeit: 0,211 ms
test=*# select * from tab2 except select * from tab1;
 col1 | col2 | col3
------+------+------
    5 |    5 |    5
    6 |    6 |    6
    4 |    4 |    4
(3 Zeilen)

Zeit: 0,218 ms
test=*# insert into tab1 select * from tab2 except select * from tab1;
INSERT 0 3
Zeit: 0,396 ms
test=*# select * from tab1;
 col1 | col2 | col3
------+------+------
    1 |    1 |    1
    2 |    2 |    2
    3 |    3 |    3
    5 |    5 |    5
    6 |    6 |    6
    4 |    4 |    4
(6 Zeilen)

Zeit: 0,210 ms
test=*#

Andreas