Wie funktioniert EXISTS in Oracle und wie unterscheidet es sich von IN?

8

Ich habe Probleme, die Klausel zu verstehen, wenn ich ein Orakelbuch lese. Hier ist 3 Bild, das ich aus dem Buch genommen habe.

Dies ist die erste SQL-Anweisung, die die IN-Klausel verwendet. Ich habe keine Probleme, sie zu verstehen.

Dies ist die zweite SQL-Anweisung, die die EXISTS-Klausel verwendet, ich verstehe nicht, warum sie alle Zeilen zurückgibt, während eine Bedingung von DEPTNO & gt; 20.

Dies ist die dritte SQL-Anweisung, die die gleichen Zeilen wie die erste SQL-Anweisung erhält, es erfordert eine zusätzliche Verknüpfung der beiden Tabellen und ich kann es nicht begründen.

Ich habe google "EXISTS ORACLE" versucht, aber die meisten Seiten erklären den Unterschied zwischen EXISTS und IN, erklären aber nicht, wie EXISTS funktioniert. Würdest du dir das erklären?

    
lamwaiman1988 16.01.2012, 03:00
quelle

2 Antworten

11

Hier ist eine ziemlich detaillierte Erklärung von beiden und wie man entscheidet, welche man verwendet: Ссылка

Exists prüft, ob die Unterabfrage ein Ergebnis liefert. Wenn Sie die Unterabfrage nehmen und sie selbst ausführen, wenn sie mindestens eine Zeile zurückgibt, dann ist die Bedingung wahr. Die dritte Abfrage fügt eine zweite Bedingung hinzu, die die Unterabfrage mit der übergeordneten Abfrage verknüpft, so dass geprüft wird, ob eine bestimmte Person eine Abteilung mit deptno & gt; 20

    
AlexanderZ 16.01.2012 03:08
quelle
8

Die zweite Abfrage gibt alle Zeilen zurück, weil sie nicht mit der primären Tabelle korreliert (verwandt) ist und die Ergebnismenge größer als 0 ist. Die dritte Abfrage ist eine korrelierte Unterabfrage (die E.DeptNo =), weshalb Es liefert das gleiche Ergebnis wie die erste Abfrage.

Die EXIST-Klausel besagt, dass die Abfrage ausgeführt werden soll, sobald die erste Übereinstimmung gefunden wird. Wenn eine Übereinstimmung gefunden wird, wird true zurückgegeben, andernfalls wird false zurückgegeben. Die Abfrage muss nicht (und im zweiten Fall nicht) mit der primären Abfrage verknüpft sein.

    
jmoreno 16.01.2012 03:10
quelle

Tags und Links