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 .