LEFT ANTI SEMI JOIN
to typ sprzężenia, który zwraca tylko te odrębne wiersze w lewym zestawie wierszy, które nie mają pasującego wiersza w prawym zestawie wierszy.
Ale podczas używania T-SQL w SQL Server, jeśli spróbujesz jawnie użyć LEFT ANTI SEMI JOIN
w zapytaniu prawdopodobnie otrzymasz następujący błąd:
Msg 155, Level 15, State 1, Line 4
'ANTI' is not a recognized join option.
Na szczęście SQL Server zawiera EXCEPT
operator, który pozwala nam wykonać LEFT ANTI SEMI JOIN
.
Kiedy używasz EXCEPT
operator, pojawia się w planie wykonania zapytania jako LEFT ANTI 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
EXCEPT
SELECT
DogName AS PetName
FROM Dogs;
To zapytanie używa EXCEPT
operatora i pojawi się jako LEFT ANTI SEMI JOIN
w planie wykonawczym.
Jest to podobne do wykonywania następujących czynności:
SELECT
DISTINCT CatName
FROM Cats c
WHERE NOT 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 usługą Azure Data Lake Analytics, możesz użyć ANTISEMIJOIN
klauzula wykonywania prawych i lewych sprzężeń anty semi. Oznacza to, że możesz użyć LEFT ANTISEMIJOIN
lub RIGHT ANTISEMIJOIN
.