LEFT SEMI JOIN
adalah jenis setengah bergabung. Ini mengembalikan nilai berbeda yang dikembalikan oleh kueri di sisi kiri dan kanan kueri.
Namun, saat menggunakan T-SQL di SQL Server, jika Anda mencoba menggunakan LEFT SEMI JOIN
secara eksplisit dalam kueri Anda, Anda mungkin akan mendapatkan kesalahan berikut:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
Untungnya, T-SQL menyertakan INTERSECT
operator, yang memungkinkan kita untuk melakukan LEFT SEMI JOIN
.
Saat Anda menggunakan INTERSECT
operator, itu muncul dalam rencana eksekusi kueri sebagai LEFT 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
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Kueri ini menggunakan INTERSECT
operator, dan karena itu akan muncul sebagai LEFT SEMI JOIN
dalam rencana eksekusi.
Ini mirip dengan melakukan hal berikut:
SELECT
DISTINCT CatName
FROM Cats c
WHERE 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 SEMIJOIN
klausa untuk melakukan semi join kanan dan kiri. Artinya, Anda dapat menggunakan LEFT SEMIJOIN
atau RIGHT SEMIJOIN
.