LEFT ANTI SEMI JOIN
adalah jenis gabungan yang mengembalikan hanya baris yang berbeda di baris kiri yang tidak memiliki baris yang cocok di baris kanan.
Tetapi ketika menggunakan T-SQL di SQL Server, jika Anda mencoba secara eksplisit menggunakan LEFT ANTI SEMI JOIN
dalam kueri Anda, Anda mungkin akan mendapatkan kesalahan berikut:
Msg 155, Level 15, State 1, Line 4
'ANTI' is not a recognized join option.
Untungnya, SQL Server menyertakan EXCEPT
operator, yang memungkinkan kita untuk melakukan LEFT ANTI SEMI JOIN
.
Saat Anda menggunakan EXCEPT
operator, ini muncul dalam rencana eksekusi kueri sebagai LEFT ANTI SEMI JOIN
.
Anda juga dapat membuat subkueri yang melakukan hal yang sama.
Contoh
Bayangkan kita memiliki dua tabel; Cats
dan Dogs
, dan kami kemudian menjalankan kueri berikut:
SELECT
CatName AS PetName
FROM Cats
EXCEPT
SELECT
DogName AS PetName
FROM Dogs;
Kueri ini menggunakan EXCEPT
operator, dan itu akan muncul sebagai LEFT ANTI SEMI JOIN
dalam rencana eksekusi.
Ini mirip dengan melakukan hal berikut:
SELECT
DISTINCT CatName
FROM Cats c
WHERE NOT EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Inilah rencana eksekusi untuk kueri itu:
Jika Anda menggunakan U-SQL dengan Azure Data Lake Analytics, Anda dapat menggunakan ANTISEMIJOIN
klausa untuk melakukan anti semi join kanan dan kiri. Artinya, Anda dapat menggunakan LEFT ANTISEMIJOIN
atau RIGHT ANTISEMIJOIN
.