Ein LEFT ANTI SEMI JOIN
ist ein Join-Typ, der nur die unterschiedlichen Zeilen im linken Rowset zurückgibt, die keine übereinstimmende Zeile im rechten Rowset haben.
Aber wenn Sie T-SQL in SQL Server verwenden, wenn Sie versuchen, explizit LEFT ANTI SEMI JOIN
zu verwenden In Ihrer Abfrage erhalten Sie wahrscheinlich die folgende Fehlermeldung:
Msg 155, Level 15, State 1, Line 4
'ANTI' is not a recognized join option.
Glücklicherweise enthält SQL Server den EXCEPT
-Operator, mit dem wir einen LEFT ANTI SEMI JOIN
ausführen können .
Wenn Sie den EXCEPT
verwenden -Operator erscheint er im Abfrageausführungsplan als LEFT ANTI SEMI JOIN
.
Sie können auch eine Unterabfrage erstellen, die dasselbe tut.
Beispiel
Stellen Sie sich vor, wir haben zwei Tabellen; Cats
und Dogs
, und wir führen dann die folgende Abfrage aus:
SELECT
CatName AS PetName
FROM Cats
EXCEPT
SELECT
DogName AS PetName
FROM Dogs;
Diese Abfrage verwendet den EXCEPT
-Operator und wird als LEFT ANTI SEMI JOIN
angezeigt im Ausführungsplan.
Es ist ähnlich wie Folgendes:
SELECT
DISTINCT CatName
FROM Cats c
WHERE NOT EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Hier ist der Ausführungsplan für diese Abfrage:
Wenn Sie U-SQL mit Azure Data Lake Analytics verwenden, können Sie den ANTISEMIJOIN
verwenden Klausel für rechte und linke Anti-Semi-Joins. Das heißt, Sie können LEFT ANTISEMIJOIN
verwenden oder RIGHT ANTISEMIJOIN
.