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 .