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 .