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
.