ich habe ein nettes Beispiel für folgende Situation im PG-Forum gefunden
http://www.pg-forum.de/sql/6476-csv-dat ... #post31854
als Antwort kam nun dasEs handelt sich um neue Datensaetze (ergo neuer PK) und leider auch um Datensätze, welche ein UPDATE erfordern (PK existiert).
Code: Alles auswählen
test=# select * from ziel;
id | name
----+-------------
1 | ads
2 | akretschmer
(2 rows)
test=*# select * from quelle;
id | name
----+---------
2 | andreas
3 | tamara
(2 rows)
test=*# insert into ziel select * from quelle where id not in (select id from ziel);
INSERT 0 1
test=*# update ziel set name = (select name from quelle where ziel.id=quelle.id) where id in (select id from quelle);
UPDATE 2
test=*# select * from ziel;
id | name
----+---------
1 | ads
2 | andreas
3 | tamara
(3 rows)
Frage : wie müsste man "Update" mittels "inner JOIN" modifizieren ? ( die Antwort steht da leider nicht )Die erste Query, also das Insert, könnte man mittels JOIN wohl optimieren:Ähnlich könnte man das Update auch optimieren, ich überlasse Dir das mal zur Übung. Du kannst schauen, was EXPLAIN bzw XPLAIN ANALYSE dazu meint.Code: Alles auswählen
insert into ziel select q.* from quelle q left join ziel z on (q.id=z.id) where z.id is null;