Chia Sẻ

Toán tử EXISTS trong SQL Server | Hỏi gì?

Rate this post

Toán tử EXISTS trong SQL Server

Trong hướng dẫn này, bạn sẽ học tìm hiểu cách sử dụng toán tử EXISTS trong SQL Server để kiểm tra sự tồn tại của các bản ghi trong một truy vấn con.

Tổng quan về toán tử EXISTS trong SQL Server

Toán tử EXISTS là một toán tử logic cho phép bạn kiểm tra xem một subquery có trả về bất kỳ bản ghi nào không. Toán tử EXISTS trả về TRUE nếu subquery trả về một hoặc nhiều bản ghi.

Sau đây minh họa cú pháp của toán tử EXISTS trong SQL Server :

EXISTS ( subquery)

Trong cú pháp này, truy vấn con chỉ là một câu lệnh SELECT. Ngay sau khi truy vấn con trả về các bản ghi, toán tử EXISTS sẽ trả về TRUE và ngừng xử lý ngay lập tức.

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

Hãy lấy một số ví dụ để hiểu cách hoạt động của toán tử EXISTS.

Sử dụng toán tử EXISTS với một truy vấn con trả về NULL

Hãy xem bảng customers trong cơ sở dữ liệu mẫu BikeStores.

Toán tử EXISTS trong SQL Server

Ví dụ sau đây trả về tất cả các bản ghi từ bảng customers:

SELECT customer_id, first_name, last_name FROM scoremidlands.orgomers WHERE EXISTS (SELECT NULL) ORDER BY first_name, last_name;

Toán tử EXISTS trong SQL Server

Trong ví dụ này, truy vấn con trả về một tập hợp kết quả có chứa NULL, nhưng do toán tử EXISTS trả về TRUE. Do đó, toàn bộ truy vấn trả về tất cả các bản ghi từ bảng customers.

Sử dụng toán tử EXISTS với một subquery tương quan

Hãy xem bangr customers và orders trong cơ sở dữ liệu mẫu BikeStores.

Toán tử EXISTS trong SQL Server

Ví dụ sau đây tìm tất cả những khách hàng đã đặt nhiều hơn hai đơn hàng:

SELECT customer_id, first_name, last_name FROM scoremidlands.orgomers c WHERE EXISTS ( SELECT COUNT (*) FROM scoremidlands.orgrs o WHERE customer_id = c.customer_id GROUP BY customer_id HAVING COUNT (*) > 2 ) ORDER BY first_name, last_name;

Toán tử EXISTS trong SQL Server

Trong ví dụ này, chúng tôi có một subquery tương quan trả về những khách hàng đặt nhiều hơn hai đơn đặt hàng.

Nếu số lượng đơn đặt hàng do khách hàng đặt ít hơn hoặc bằng hai, truy vấn con trả về tập kết quả trống khiến toán tử EXISTS trả về FALSE.

Dựa trên kết quả của toán tử EXISTS, khách hàng sẽ được đưa vào bộ kết quả trả về.

Toán tử EXISTS so với toán tử IN

Câu lệnh sau sử dụng toán tử IN để tìm đơn đặt hàng của khách hàng từ San Jose:

SELECT * FROM scoremidlands.orgrs WHERE customer_id IN ( SELECT customer_id FROM scoremidlands.orgomers WHERE city = ‘San Jose’ ) ORDER BY customer_id, order_date;

Câu lệnh sau sử dụng toán tử EXISTS trả về cùng một kết quả:

SELECT * FROM scoremidlands.orgrs o WHERE EXISTS ( SELECT customer_id FROM scoremidlands.orgomers c WHERE o.customer_id = c.customer_id AND city = ‘San Jose’ ) ORDER BY o.customer_id, order_date;

Toán tử EXISTS trong SQL Server

Toán tử EXISTS so với mệnh đề JOIN

Toán tử EXISTS trả về TRUE hoặc FALSE trong khi mệnh đề JOIN trả về bản ghi từ bảng khác.

Bạn sử dụng toán tử EXISTS để kiểm tra xem một truy vấn con có trả về bất kỳ bản ghi nào không và dừng ngay khi có bất kỳ bản ghi được trả về. Trong khi đó, bạn sử dụng mệnh đề JOIN để mở rộng tập kết quả bằng cách kết hợp nó với các cột từ các bảng có liên quan.

Trong thực tế, bạn sử dụng EXISTS khi bạn chỉ cần kiểm tra sự tồn tại của các hàng từ các bảng liên quan mà không cần trả về dữ liệu từ chúng.

Trong hướng dẫn này, bạn đã tìm hiểu cách sử dụng toán tử EXISTS SQL Server để kiểm tra xem truy vấn con có trả về bản ghi hay không.

SQL Server • Subquery

Xem thêm:  Cách đổi tên thú cưng Play Together

Leave a Reply

Your email address will not be published.

Back to top button