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
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
- Anonymous Poster (20.07.2009 11:19)
- Alexander Heinrich (20.07.2009 11:34)
- Anonymous Poster (20.07.2009 11:43)
- Alexander Heinrich (20.07.2009 11:53)
- Anonymous Poster (20.07.2009 12:09)
- Dieter Nöth (20.07.2009 13:19)
