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 .