LEFT SEMI JOIN
là loại tham gia một nửa. Nó trả về bất kỳ giá trị khác biệt nào được trả về bởi cả truy vấn ở bên trái và bên phải của truy vấn.
Tuy nhiên, khi sử dụng T-SQL trong SQL Server, nếu bạn cố gắng sử dụng rõ ràng LEFT SEMI JOIN
trong truy vấn của mình, có thể bạn sẽ gặp lỗi sau:
Msg 155, Level 15, State 1, Line 4
'SEMI' is not a recognized join option.
May mắn thay, T-SQL bao gồm INTERSECT
, cho phép chúng tôi thực hiện LEFT SEMI JOIN
.
Khi bạn sử dụng INTERSECT
, nó xuất hiện trong kế hoạch thực thi truy vấn dưới dạng LEFT SEMI JOIN
.
Bạn cũng có thể tạo một truy vấn con thực hiện điều tương tự.
Ví dụ
Hãy tưởng tượng chúng ta có hai bảng; Cats
và Dogs
và sau đó chúng tôi chạy truy vấn sau:
SELECT
CatName AS PetName
FROM Cats
INTERSECT
SELECT
DogName AS PetName
FROM Dogs;
Truy vấn này sử dụng INTERSECT
và do đó nó sẽ xuất hiện dưới dạng LEFT SEMI JOIN
trong kế hoạch thực hiện.
Nó tương tự như làm như sau:
SELECT
DISTINCT CatName
FROM Cats c
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);
Đây là kế hoạch thực thi cho truy vấn đó:
Nếu bạn sử dụng U-SQL với Azure Data Lake Analytics, bạn có thể sử dụng SEMIJOIN
mệnh đề để thực hiện phép nối bán phải và trái. Đó là, bạn có thể sử dụng LEFT SEMIJOIN
hoặc RIGHT SEMIJOIN
.