A LEFT SEMI JOIN è una specie di semiunione. Restituisce tutti i valori distinti restituiti da entrambe le query sul lato sinistro e destro della query.
Tuttavia, quando si utilizza T-SQL in SQL Server, se si tenta di utilizzare esplicitamente LEFT SEMI JOIN nella tua query, probabilmente riceverai il seguente errore:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Fortunatamente, T-SQL include INTERSECT operatore, che ci consente di eseguire un LEFT SEMI JOIN .
Quando usi INTERSECT operatore, appare nel piano di esecuzione della query come LEFT SEMI JOIN .
Puoi anche costruire una sottoquery che faccia la stessa cosa.
Esempio
Immagina di avere due tavoli; Cats e Dogs , quindi eseguiamo la seguente query:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Questa query utilizza il INTERSECT operatore, e apparirà quindi come LEFT SEMI JOIN nel piano di esecuzione.
È simile a fare quanto segue:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName); Ecco il piano di esecuzione per quella query:
Se usi U-SQL con Azure Data Lake Analytics, puoi usare SEMIJOIN clausola per eseguire semi join destro e sinistro. Cioè, puoi usare LEFT SEMIJOIN o RIGHT SEMIJOIN .