Es treten jedoch Probleme auf, wenn man die Logik umkehrt und NOT IN und NOT EXISTS verwendet, was unterschiedliche Ergebnismengen zurückgibt. Die erste Abfrage gibt keine Zeilen zurück, die zweite die gewünschten Daten. Diese Abfragen sind nicht identisch!
Die NOT IN-Klausel ist im Prinzip äquivalent zum Vergleichen jedes Wertes mithilfe von „=“, was fehlschlägt, wenn ein Test FALSE oder NULL ist. Ein Beispiel:
All diese Abfragen geben keine Zeilen zurück. Bei der zweiten ist dies am deutlichsten, denn 1 != NULL ergibt NULL, so dass die gesamte WHERE-Bedingung für diese Zeile falsch ist. Die folgenden Abfragen hingegen würden funktionieren:
Die obige NOT IN-Abfrage lässt sich durchaus verwenden, solange man sicherstellt, dass nicht NULL in den Ergebnissen zurückgegeben wird. Die folgenden beiden Abfragen funktionieren ebenfalls, allerdings unter der Voraussetzung, dass empno nicht NULL ist, was in diesem Fall wohl zutreffen dürfte:
Wer die Unterschiede zwischen IN, EXISTS, NOT IN und NOT EXISTS verstanden hat, kann viele Stolperfallen vermeiden, die sich beim Auftreten von NULL-Werten in den Daten einer Unterabfrage ergeben.
Page: 1 2
Betroffen sind Chrome für Windows, macOS und Linux. Das von den Anfälligkeiten ausgehende Risiko stuft…
Der Gerichtshof der Europäischen Union entscheidet „endgültig“ über den Rechtsstreit. Dem Urteil zufolge sind von…
Sie betrifft ältere Versionen von Windows 10. Ein weiterer kritischer Bug steckt aber auch in…
Der Downloader nimmt Windows-Rechner ins Visier. RansomHub festigt seine Position als führende Ransomware-Gruppe weltweit.
Britische Bestattungsunternehmen haben bereits reagiert und weisen darauf hin, dass ihre Beerdigungen nicht gelivestreamt werden.
Der neue Apple-Prozessor A18 basiert auf einem 3-Nanometer-Verfahren. Apple verspricht mehr Leistung und eine höhere…