SQL: Unterschied EXISTS zu IN

monsee

Neuer Benutzer
Beiträge
3
Hallo zusammen,

eigentlich schreibe ich SQL-Statements blind, aber trotzdem kommt ja mal ab und an eine Frage auf.
Worin besteht der Unterschied zwischen EXISTS (Subselect) und [Spalte] IN (Subselect).

Meine Frage gründet auf folgendem:
Ich habe zwei Tabellen, Tabelle t1 mit Primary Key c_id und Tabelle t2 mit Foreign Key c_id.

Ich wollte nun aus t1 alle IDs haben, deren Foreign Key in t2 nicht vorkommt.
Meine erste Abfrage war:
SELECT t1.c_id FROM t1 WHERE NOT EXISTS (SELECT t2.c_id FROM t2)

Das Ergebnis war leer. Ich vermute mal, dass ich nicht speziell nach der ID gesucht habe, weil vor dem Subselect ja kein Kriterium steht.´

Ok, aber wonach hat die EXISTS-Abfrage jetzt eigentlich gesucht, was nicht existent sein könnte?

Diese Abfrage brachte mir die t1.c_id's, die in t2 nicht existierten:
SELECT t1.c_id FROM t1 WHERE NOT t1.c_id IN (SELECT t2.c_id FROM t2)

Wo ist der Unterscheid?

Beste Grüße,
monsee
 
Werbung:
Werbung:
Zurück
Oben