A LEFT SEMI JOIN е нещо като полусъединяване. Връща всички различни стойности, които се връщат както от заявката от лявата, така и от дясната страна на заявката.
Въпреки това, когато използвате T-SQL в SQL Server, ако се опитате изрично да използвате LEFT SEMI JOIN във вашата заявка вероятно ще получите следната грешка:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
За щастие T-SQL включва INTERSECT оператор, който ни позволява да извършим LEFT SEMI JOIN .
Когато използвате INTERSECT оператор, той се появява в плана за изпълнение на заявката като LEFT SEMI JOIN .
Можете също така да създадете подзаявка, която прави същото.
Пример
Представете си, че имаме две маси; Cats и Dogs и след това изпълняваме следната заявка:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Тази заявка използва INTERSECT оператор и следователно ще се появи като LEFT SEMI JOIN в плана за изпълнение.
Това е подобно на това да направите следното:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName); Ето плана за изпълнение на тази заявка:
Ако използвате U-SQL с Azure Data Lake Analytics, можете да използвате SEMIJOIN клауза за извършване на дясно и ляво полусъединяване. Това означава, че можете да използвате LEFT SEMIJOIN или RIGHT SEMIJOIN .