Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách thực hiện THAM GIA ANTI SEMI TRÁI trong SQL Server

A LEFT ANTI SEMI JOIN là kiểu kết hợp chỉ trả về các hàng riêng biệt trong tập hợp hàng bên trái không có hàng phù hợp trong tập hợp hàng bên phải.

Nhưng khi sử dụng T-SQL trong SQL Server, nếu bạn cố gắng sử dụng rõ ràng LEFT ANTI 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
'ANTI' is not a recognized join option.

May mắn thay, SQL Server bao gồm EXCEPT toán tử, cho phép chúng tôi thực hiện LEFT ANTI SEMI JOIN .

Khi bạn sử dụng EXCEPT , nó xuất hiện trong kế hoạch thực thi truy vấn dưới dạng LEFT ANTI 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; CatsDogs và sau đó chúng tôi chạy truy vấn sau:

SELECT 
    CatName AS PetName
FROM Cats
EXCEPT
SELECT 
    DogName AS PetName
FROM Dogs;

Truy vấn này sử dụng EXCEPT và nó sẽ xuất hiện dưới dạng LEFT ANTI SEMI JOIN trong kế hoạch thực hiện.

Tương tự như làm như sau:

SELECT 
    DISTINCT CatName
FROM Cats c 
WHERE NOT 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 ANTISEMIJOIN mệnh đề thực hiện các phép nối chống bán phải và trái. Đó là, bạn có thể sử dụng LEFT ANTISEMIJOIN hoặc RIGHT ANTISEMIJOIN .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm LEN không bao gồm dấu cách ở cuối trong SQL Server

  2. Cách chọn mọi hàng trong đó giá trị cột KHÔNG bị phân biệt

  3. Tôi có thể sử dụng Kiểu dữ liệu ngày trong máy chủ sql như thế nào?

  4. Nhận ngày từ một số tuần trong T-SQL

  5. Xóa tài khoản thư cơ sở dữ liệu (SSMS)