EEN LEFT SEMI JOIN is een soort half-join. Het retourneert alle afzonderlijke waarden die worden geretourneerd door zowel de zoekopdracht aan de linker- als rechterkant van de zoekopdracht.
Als u echter T-SQL in SQL Server gebruikt en u probeert expliciet LEFT SEMI JOIN te gebruiken in uw zoekopdracht krijgt u waarschijnlijk de volgende foutmelding:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Gelukkig bevat T-SQL de INTERSECT operator, waarmee we een LEFT SEMI JOIN . kunnen uitvoeren .
Wanneer u de INTERSECT . gebruikt operator, verschijnt het in het uitvoeringsplan van de query als een LEFT SEMI JOIN .
U kunt ook een subquery maken die hetzelfde doet.
Voorbeeld
Stel je voor dat we twee tabellen hebben; Cats en Dogs , en we voeren dan de volgende query uit:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Deze zoekopdracht gebruikt de INTERSECT operator, en het zal daarom verschijnen als een LEFT SEMI JOIN in het uitvoeringsplan.
Het lijkt op het volgende doen:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName); Hier is het uitvoeringsplan voor die zoekopdracht:
Als u U-SQL gebruikt met Azure Data Lake Analytics, kunt u de SEMIJOIN gebruiken clausule om rechts en links semi-joins te doen. Dat wil zeggen, u kunt LEFT SEMIJOIN . gebruiken of RIGHT SEMIJOIN .