LEFT ANTI SEMI JOIN は、右側の行セットに一致する行がない左側の行セットの個別の行のみを返す結合のタイプです。
ただし、SQL ServerでT-SQLを使用する場合、LEFT ANTI SEMI JOINを明示的に使用しようとすると クエリで、おそらく次のエラーが発生します:
Msg 155, Level 15, State 1, Line 4
'ANTI' is not a recognized join option.
幸い、SQLServerにはEXCEPTが含まれています LEFT ANTI SEMI JOINを実行できる演算子 。
EXCEPTを使用する場合 演算子の場合、クエリ実行プランではLEFT ANTI SEMI JOINとして表示されます。 。
同じことを行うサブクエリを作成することもできます。
例
2つのテーブルがあると想像してください。 Cats およびDogs 、次に次のクエリを実行します:
SELECT
CatName AS PetName
FROM Cats
EXCEPT
SELECT
DogName AS PetName
FROM Dogs;
このクエリはEXCEPTを使用します 演算子を入力すると、LEFT ANTI SEMI JOINとして表示されます。 実行計画で。
次のようにするのと似ています:
SELECT
DISTINCT CatName
FROM Cats c
WHERE NOT EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName); そのクエリの実行プランは次のとおりです。
Azure Data Lake AnalyticsでU-SQLを使用する場合は、ANTISEMIJOINを使用できます。 左右の反半結合を行う句。つまり、LEFT ANTISEMIJOINを使用できます またはRIGHT ANTISEMIJOIN 。