In welchen Szenarien wird diese Abfrage verwendet?
select * from TableA where exists
(select null from TableB where TableB.Col1=TableA.Col1)
In welchen Szenarien wird diese Abfrage verwendet?
select * from TableA where exists
(select null from TableB where TableB.Col1=TableA.Col1)
El NULL
macht keinen Sinn. Das ist einfach schlechtes SQL.
El exists
Klausel soll verwenden SELECT *
.
Die Menschen erfinden Geschichten über die Kosten von SELECT *
. Sie behaupten, dass es eine "zusätzliche" Metadatenabfrage durchführt. Das ist nicht der Fall. Sie behaupten, es handele sich um eine "Makro-Erweiterung" und erfordere viel zusätzliche Parse-Zeit. Das ist nicht der Fall.
Die EXISTS-Bedingung gilt als "erfüllt", wenn die Unterabfrage mindestens eine Zeile zurückgibt.
Die Syntax für die EXISTS-Bedingung lautet:
SELECT-Spalten FROM Tabellen WHERE EXISTS ( subquery );
Bitte beachten Sie, dass "Select Null aus mytable" Anzahl der Zeilen in mytable zurückgeben wird, aber alle enthalten nur eine Spalte mit Null in der Zelle als die Anforderung der äußeren Abfrage ist nur zu überprüfen, ob eine Zeile in der gegebenen Bedingung wie in Ihrem Fall fallen es ist "TabelleB.Col1=TableA.Col1"
können Sie null in 1, 0 oder einen anderen in der Tabelle verfügbaren Spaltennamen ändern. 1/0 ist vielleicht keine gute Idee :)
Dies ist eine geschmacklose Art, alle Datensätze in TabelleA auszuwählen, die einen passenden Datensatz (Spalte1=Spalte1) in TabelleB haben. Sie hätten genauso gut z. B. "1" oder "*" auswählen können.
Ein besser lesbarer Weg, um das Gleiche zu erreichen, wäre
SELECT * FROM TableA WHERE Col1 IN ( SELECT Col1 IN TableB )
Bitte, bitte, alle ....
EXISTS
gibt ein BOOLEAN zurück, d.h. TRUE oder FALSE. Wenn die Ergebnismenge nicht leer ist, wird TRUE zurückgegeben. Die Korrelation der Unterabfrage ist wie im obigen Fall wichtig.
d.h. Gib mir alle Zeilen in A, von denen MINDESTENS eine Spalte1 in B existiert.
Es spielt keine Rolle, was in der Auswahlliste steht. Es ist nur eine Frage des Stils.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.