Um
LEFT SEMI JOIN
é uma espécie de meia-junção. Ele retorna quaisquer valores distintos que são retornados pela consulta nos lados esquerdo e direito da consulta. No entanto, ao usar o T-SQL no SQL Server, se você tentar usar explicitamente
LEFT SEMI JOIN
em sua consulta, você provavelmente receberá o seguinte erro:Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Felizmente, o T-SQL inclui o
INTERSECT
operador, que nos permite realizar um LEFT SEMI JOIN
. Quando você usa o
INTERSECT
operador, ele aparece no plano de execução da consulta como um LEFT SEMI JOIN
. Você também pode construir uma subconsulta que faça a mesma coisa.
Exemplo
Imagine que temos duas tabelas;
Cats
e Dogs
, e então executamos a seguinte consulta:SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Esta consulta usa o
INTERSECT
operador e, portanto, aparecerá como um LEFT SEMI JOIN
no plano de execução. É semelhante a fazer o seguinte:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Aqui está o plano de execução para essa consulta:
Se você usa U-SQL com Azure Data Lake Analytics, pode usar o
SEMIJOIN
cláusula para fazer semijunções direita e esquerda. Ou seja, você pode usar LEFT SEMIJOIN
ou RIGHT SEMIJOIN
.