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 .