LEFT SEMI JOIN
jest rodzajem półzłącza. Zwraca wszelkie odrębne wartości, które są zwracane przez zapytanie po lewej i prawej stronie zapytania.
Jednak podczas używania T-SQL w SQL Server, jeśli spróbujesz jawnie użyć LEFT SEMI JOIN
w zapytaniu prawdopodobnie otrzymasz następujący błąd:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Na szczęście T-SQL zawiera INTERSECT
operator, który pozwala nam wykonać LEFT SEMI JOIN
.
Kiedy używasz INTERSECT
operator, pojawia się w planie wykonania zapytania jako LEFT SEMI JOIN
.
Możesz także skonstruować podzapytanie, które robi to samo.
Przykład
Wyobraź sobie, że mamy dwa stoły; Cats
i Dogs
, a następnie uruchamiamy następujące zapytanie:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
To zapytanie używa INTERSECT
operatora i dlatego pojawi się jako LEFT SEMI JOIN
w planie wykonawczym.
Jest to podobne do wykonywania następujących czynności:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Oto plan wykonania tego zapytania:
Jeśli używasz języka U-SQL z Azure Data Lake Analytics, możesz użyć SEMIJOIN
klauzula wykonywania prawych i lewych sprzężeń semi. Oznacza to, że możesz użyć LEFT SEMIJOIN
lub RIGHT SEMIJOIN
.