LEFT SEMI JOIN
je druh polovičního spojení. Vrací jakékoli odlišné hodnoty, které jsou vráceny dotazem na levé i pravé straně dotazu.
Pokud však používáte T-SQL v SQL Server, pokud se pokusíte explicitně použít LEFT SEMI JOIN
ve vašem dotazu pravděpodobně dostanete následující chybu:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Naštěstí T-SQL obsahuje INTERSECT
operátor, který nám umožňuje provést LEFT SEMI JOIN
.
Když použijete INTERSECT
operátor, objeví se v plánu provádění dotazu jako LEFT SEMI JOIN
.
Můžete také vytvořit poddotaz, který dělá totéž.
Příklad
Představte si, že máme dva stoly; Cats
a Dogs
a poté spustíme následující dotaz:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Tento dotaz používá INTERSECT
operátor, a proto se zobrazí jako LEFT SEMI JOIN
v prováděcím plánu.
Je to podobné, jako když uděláte následující:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Zde je plán provedení pro tento dotaz:
Pokud používáte U-SQL s Azure Data Lake Analytics, můžete použít SEMIJOIN
klauzule k provedení pravého a levého polovičního spojení. To znamená, že můžete použít LEFT SEMIJOIN
nebo RIGHT SEMIJOIN
.