nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

EXISTS vs. IN - Warum sind diese Abfragen nicht äqu ivalent?

Von: Alexander Heinrich (alexander.tobias.heinrich@googlemail.com) [Profil]
Datum: 20.07.2009 11:14
Message-ID: <e7cb1723-61b0-4504-9c86-9e84e77116e9@s31g2000yqs.googlegroups.com>
Newsgroup: de.comp.datenbanken.misc
Hallo de.comp.datenbanken.misc,

ich habe auf meinem DB2 System (Express-C, v9.5.2, WinXP) zwei
Tabellen A und B. A hat eine Primärschlüsselspalte A_PK und B
referenziert diese Spalte (Spalte in B heißt auch A_PK).

Jetzt habe ich folgende zwei Abfragen formuliert, die jeweils alle
Datensätze aus A anzeigen sollen, die nicht von B referenziert werden.
Allerdings liefern die Abfragen unterschiedliche Ergebnisse. Wieso?

1) SELECT * FROM A WHERE NOT EXISTS (SELECT * FROM B WHERE B.A_PK =
A.A_PK)
Liefert bei mir ein nicht-leeres Resultset.

2) SELECT * FROM A WHERE A.A_PK NOT IN (SELECT B.A_PK FROM B)
Liefert bei mir ein leeres Resultset.

Gruß,
Alexander

[ Auf dieses Posting antworten ]

Antworten