UN LEFT SEMI JOIN
es una especie de media unión. Devuelve los valores distintos que devuelve la consulta en los lados izquierdo y derecho de la consulta.
Sin embargo, cuando usa T-SQL en SQL Server, si intenta usar explícitamente LEFT SEMI JOIN
en su consulta, probablemente obtendrá el siguiente error:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Afortunadamente, T-SQL incluye el INTERSECT
operador, que nos permite realizar un LEFT SEMI JOIN
.
Cuando usas el INTERSECT
operador, aparece en el plan de ejecución de la consulta como LEFT SEMI JOIN
.
También puede construir una subconsulta que haga lo mismo.
Ejemplo
Imagina que tenemos dos mesas; Cats
y Dogs
, y luego ejecutamos la siguiente consulta:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Esta consulta utiliza el INTERSECT
operador, por lo que aparecerá como LEFT SEMI JOIN
en el plan de ejecución.
Es similar a hacer lo siguiente:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Aquí está el plan de ejecución para esa consulta:
Si usa U-SQL con Azure Data Lake Analytics, puede usar SEMIJOIN
Cláusula para hacer semiuniones derecha e izquierda. Es decir, puede usar LEFT SEMIJOIN
o RIGHT SEMIJOIN
.