EXCEPT trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng EXCEPT trong SQL Server để loại trừ tập kết quả của một truy vấn ra khỏi tập kết quả của một truy vấn khác.

Giới thiệu về EXCEPT trong SQL Server

Toán tử EXCEPT trong SQL Server so sánh tập hợp kết quả của hai truy vấn và trả về các bản ghi của truy vấn thứ nhất không xuất hiện trong các bản ghi của truy vấn thứ hai.

Nói cách khác, hàm EXCEPT loại trừ tập kết quả của một truy vấn từ một truy vấn khác.

Sau đây là cú pháp của EXCEPT trong SQL Server:

query_1
EXCEPT
query_2

Sau đây là các quy tắc để kết hợp tập kết quả của hai truy vấn theo cú pháp trên:

  • Số lượng và thứ tự của các cột phải giống nhau trong cả hai truy vấn.
  • Các kiểu dữ liệu của các cột tương ứng phải giống nhau hoặc tương thích.

Hình sau cho thấy cách EXCEPT xử lý hai tập kết quả T1 và T2:

EXCEPT trong SQL Server

Trong hình minh họa này:

  • Tập kết quả T1 bao gồm 1, 2, 3.
  • Bộ kết quả T2 bao gồm 2, 3, 4.

except của T1 và T2 trả về 1, là bản ghi khác biệt với tập kết quả T1 không xuất hiện trong tập kết quả T2.

Ví dụ về toán tử EXCEPT trong SQL Server

Xem bảng productsorder_items trong cơ sở dữ liệu mẫu BikeStores.

Ví dụ về EXCEPT trong SQL Server

Ví dụ toán tử EXCEPT đơn giản

Ví dụ sau sử dụng toán tử EXCEPT để tìm các sản phẩm không có doanh số:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items;
Ví dụ về toán tử EXCEPT trong SQL Server

Trong ví dụ này, truy vấn đầu tiên trả về tất cả các sản phẩm. Truy vấn thứ hai trả về các sản phẩm có doanh số bán hàng. Do đó, tập hợp kết quả chỉ bao gồm các sản phẩm không có doanh số.

Ví dụ toán tử EXCEPT với mệnh đề ORDER BY trong SQL Server

Để sắp xếp tập hợp kết quả được tạo bởi toán tử EXCEPT, bạn thêm mệnh đề ORDER BY trong truy vấn cuối cùng. Ví dụ: ví dụ sau tìm các sản phẩm không có doanh số bán hàng và sắp xếp các sản phẩm theo thứ tự tăng dần theo id của chúng:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items
ORDER BY 
	product_id;
Ví dụ toán tử EXCEPT với mệnh đề ORDER BY trong SQL Server

Trong hướng dẫn này, bạn đã tìm hiểu cách sử dụng toán tử EXCEPT trong SQL Server để loại trừ tập kết quả của một truy vấn ra khỏi tập kết quả của một truy vấn khác.

SQL Server
Bài Viết Liên Quan:
INTERSECT trong SQL Server
Trung Nguyen 22/11/2020
INTERSECT trong SQL Server

Tìm hiểu cách sử dụng toán tử INTERSECT trong SQL Server để trả về phần giao nhau của các tập kết quả của hai truy vấn.

SQL Server: Hướng dẫn subquery trong SQL Server từ A-Z
Trung Nguyen 22/11/2020
SQL Server: Hướng dẫn subquery trong SQL Server từ A-Z

Tìm hiểu về subquery, toán tử EXISTS, ANY, ALL trong SQL Server và cách sử dụng truy vấn con để truy vấn dữ liệu.

UNION trong SQL Server
Trung Nguyen 22/11/2020
UNION trong SQL Server

Tìm hiểu cách sử dụng UNION trong SQL Server để kết hợp kết quả của hai hoặc nhiều truy vấn thành một tập kết quả duy nhất.

Toán tử ALL trong SQL Server
Trung Nguyen 21/11/2020
Toán tử ALL trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng toán tử ALL trong SQL Server để so sánh một giá trị với danh sách tập hợp giá trị cột đơn.