Hãy tạo dbo.Customer và dbo.Country Table, sau đó sử dụng EXISTS để trả về các bản ghi cho các trường hợp khác nhau.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), Age tinyint) GO insert into dbo.Customer Values ( 1,'Raza','M','PK',20), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (7,'Raza','M','US',33), (8,'Dita','M','US',15), (9,'Adita','M','US',29) Create table dbo.Country ( CId tinyint, CountryName VARCHAR(50), CountryShortName CHAR(2)) go Insert into dbo.Country Values (1,'Pakistan','Pk'), (2,'United States of America','US')
1) EXISTS sẽ trả về TRUE nếu truy vấn con chứa bất kỳ hàng nào.
Đúng vậy, nếu truy vấn con của chúng ta sẽ trả về bất kỳ hàng nào và chúng ta đã sử dụng EXISTS, thì truy vấn bên ngoài sẽ trả về tất cả các hàng.
Chọn * từ dbo. br />
WHERE Exists ( Select 1)
Cách sử dụng EXISTS trong SQL Server - Hướng dẫn SQL Server / TSQL |
Nhận thấy rằng truy vấn con của chúng tôi là truy vấn tĩnh (Chọn 1). Vì truy vấn con đã trả về hàng và EXISTS trả về TRUE nên tất cả các bản ghi từ bảng dbo.Customer được hiển thị.
2) Sử dụng EXISTS và kết hợp với SubQuery
Ví dụ thời gian thực hơn về EXISTS sẽ là khi chúng ta muốn tìm tất cả các bản ghi từ bảng dbo.Customer có CountryShortName phù hợp từ bảng dbo.Country.
SELECT * FROM dbo.Customer a WHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Nhận thấy rằng tôi đã so sánh CountryShortName từ dbo.Customer và dbo.Country. Mỗi hàng bên ngoài sẽ được so sánh với kết quả truy vấn con và nếu khớp, thì chúng ta sẽ nhận được hàng.
Chúng ta có thể sử dụng mệnh đề IN cho cùng một yêu cầu.
SELECT * FROM dbo.Customer a WHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Cách sử dụng EXISTS trong SQL Server để trả về các bản ghi phù hợp - Hướng dẫn SQL Server / TSQL |
Cách sử dụng Exists và Not Exit trong SQL Server