Hallo,
vermutlich nur eine Kleinigkeit, aber
1) Ich habe eine Sourcetabelle, einfaches Beispiel:
Source-Tab, eine Spalte mit int, enthält die Werte 1,2,3,2,
2) Ich habe eine leere Zieltabelle, ebenfalls nur eine Spalte von Typ int
Die Spalte soll in beiden Tabelle A heißen.
Ich möchte in die Ziel-Tabelle nur jene Werte aus Source einfügen, die noch nicht enthalten sind.
INSERT INTO Dest (A)
SELECT A FROM Source
WHERE not exists (SELECT A FROM Dest D WHERE D.A = A)
Wenn die Zieltabelle leer ist, wird mir die "2" doppelt eingefügt.
Bei einem zweiten Durchlauf funktioniert es wie erartet.
Es scheint so, als würde das "WHERE not exists ..." nur jene Einträge berücksichtigen, die schon in der Datenbank sind und jene, die sozusagen unterwegs sind, nicht beachten .
In meinem Fall kann ich das Problem einfach mit einem SELECT DISTINCT lösen.
Gibt es auch andere Lösungsmöglichkeiten?
Danke!!
vermutlich nur eine Kleinigkeit, aber
1) Ich habe eine Sourcetabelle, einfaches Beispiel:
Source-Tab, eine Spalte mit int, enthält die Werte 1,2,3,2,
2) Ich habe eine leere Zieltabelle, ebenfalls nur eine Spalte von Typ int
Die Spalte soll in beiden Tabelle A heißen.
Ich möchte in die Ziel-Tabelle nur jene Werte aus Source einfügen, die noch nicht enthalten sind.
INSERT INTO Dest (A)
SELECT A FROM Source
WHERE not exists (SELECT A FROM Dest D WHERE D.A = A)
Wenn die Zieltabelle leer ist, wird mir die "2" doppelt eingefügt.
Bei einem zweiten Durchlauf funktioniert es wie erartet.
Es scheint so, als würde das "WHERE not exists ..." nur jene Einträge berücksichtigen, die schon in der Datenbank sind und jene, die sozusagen unterwegs sind, nicht beachten .
In meinem Fall kann ich das Problem einfach mit einem SELECT DISTINCT lösen.
Gibt es auch andere Lösungsmöglichkeiten?
Danke!!