Ein LEFT SEMI JOIN
ist eine Art Halbverbindung. Es gibt alle unterschiedlichen Werte zurück, die sowohl von der Abfrage auf der linken als auch auf der rechten Seite der Abfrage zurückgegeben werden.
Wenn Sie jedoch bei der Verwendung von T-SQL in SQL Server versuchen, explizit LEFT SEMI JOIN
zu verwenden In Ihrer Abfrage erhalten Sie wahrscheinlich die folgende Fehlermeldung:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Glücklicherweise enthält T-SQL den INTERSECT
-Operator, mit dem wir einen LEFT SEMI JOIN
ausführen können .
Wenn Sie den INTERSECT
verwenden -Operator, erscheint er im Abfrageausführungsplan als LEFT 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
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Diese Abfrage verwendet den INTERSECT
-Operator und erscheint daher als LEFT SEMI JOIN
im Ausführungsplan.
Es ist ähnlich wie Folgendes:
SELECT
DISTINCT CatName
FROM Cats c
WHERE 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 SEMIJOIN
verwenden -Klausel, um rechte und linke Semi-Joins auszuführen. Das heißt, Sie können LEFT SEMIJOIN
verwenden oder RIGHT SEMIJOIN
.