sql >> Databáze >  >> RDS >> Sqlserver

Jak provést LEVÝ SEMI JOIN v SQL Server

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 .


  1. Odstraňování problémů Nelegální kombinace chyb porovnávání v mysql

  2. Automaticky generujte složený klíč v SQLite

  3. Upgrade na nejnovější Jira s nejnovější verzí serveru MariaDB

  4. Salesforce SOQL z Microsoft Office