Laden...

Datensätze, die nicht in einer anderen Tabelle vorkommen, ermitteln

Erstellt von Klein-Dummy vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.269 Views
Thema geschlossen
K
Klein-Dummy Themenstarter:in
2 Beiträge seit 2011
vor 10 Jahren
Datensätze, die nicht in einer anderen Tabelle vorkommen, ermitteln

verwendetes Datenbanksystem: Oracle

Ich benötige Datensätze, die nicht in einer anderen Tabelle vorkommen.

Select * from tabelle1 t1
where <Bedingung>
and t1.kundennr not in
(select kundennr from tabelle2)

Tabelle 2 ist sehr groß. Ist das optimal gelöst mit dem subselect, denn ich brauche ja nicht alle Kundennummern von Tabelle 2?

T
64 Beiträge seit 2011
vor 10 Jahren

Wenn du nur die Unterschiede zwischen 2 Tabellen brauchst und diese gleich aufgebaut sind schau dir mal MINUS an.
SQL MINUS

1.820 Beiträge seit 2005
vor 10 Jahren

Hallo,

alternativ einen LEFT OUTER JOIN verwenden und alle Zeilen ausfiltern, wo keine Verknüpfung gefunden wurde:

SELECT * FROM tabelle1
LETT OUTER JOIN tabelle2 on tabelle2.Spalte=tabelle1.Spalte
WHERE tabelle2.Spalte is null

Wichtig ist in jedem Fall ein Index auf der Vergleichsspalte in der großen Tabelle.

Nobody is perfect. I'm sad, i'm not nobody 🙁

F
115 Beiträge seit 2012
vor 10 Jahren

Hi,

geht mit beiden Vorschlägen, MINUS heißt in manchen DBs "except".

Gruß
f_i´gy

Hinweis von herbivore vor 10 Jahren

Da du offensichtlich nicht der erste bist, der vor diesem Problem steht, beachte bitte [Hinweis] Wie poste ich richtig? Punkt 1.1 (sowie 1.1.1 und 3 ==> Titel geändert).

Thema geschlossen