Điều kiện EXISTS trong SQL Server

Exists trong SQL Server là gì? Cách dùng NOT Exists trong SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

Trong SQL Server (Transact-SQL) điều kiện EXISTS được dùng để kết hợp với truy vấn nội bộ (subquery). Điều kiện được đáp ứng nếu truy vấn nội bộ trả về ít nhất 1 hàng. Điều kiện này có thể dùng trong lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Cú pháp mệnh đề EXISTS trong SQL Server

WHERE EXISTS ( subquery);

Tên biến hoặc giá trị biến

subquery

Subquery - truy vấn nội bộ là một lệnh SELECT. Nếu truy vấn này trả về ít nhất 1 bản ghi trong bộ kết quả thì mệnh đề EXISTS được đánh giá là đúng và điều kiện EXISTS được đáp ứng. Nếu truy vấn nội bộ không trả về bản ghi nào, mệnh đề EXISTS được đánh giá là sai và điều kiện EXISTS không được đáp ứng.

Lưu ý

Sử dụng điều kiện EXISTS không hiệu quả do truy vấn nội bộ RE-RUN (chạy lại) trên mỗi hàng trong bảng ở truy vấn ngoài. Có nhiều cách hiệu quả hơn mà không cần dùng điều kiện EXISTS.

Ví dụ - với lệnh SELECT

Lệnh SELECT dùng với điều kiện EXISTS như dưới đây.

SELECT * 
FROM nhanvien
WHERE EXISTS (SELECT *
FROM danhba
WHERE nhanvien.ho = danhba.ho
AND nhanvien.ten = danhba.ten);

Ví dụ này sẽ trả về tất cả các bản ghi từ bảng nhanvien khi có ít nhất 1 bảng ghi trong bảng danhba có họ và tên khớp với họ và tên trong bảng nhanvien.

Ví dụ - lệnh SELECT dùng NOT EXISTS

Điều kiện EXISTS có thể kết hợp với toán tử NOT.

SELECT * 
FROM nhanvien
WHERE NOT EXISTS (SELECT *
FROM danhba
WHERE nhanvien.ho = danhba.ho
AND nhanvien.ten = danhba.ten);

Kết quả trả về là tất cả các bản ghi trong bảng nhanvien nếu không có bản ghi họ và tên nào trong bảng danhba khớp với họ và tên trong bảng nhanvien.

Ví dụ - lệnh INSERT

Đây là ví dụ dùng lệnh INSERT với điều kiện EXISTS

INSERT INTO danhba
(danhba_id, danhba_ten)
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE EXISTS (SELECT *
FROM donhang
WHERE nhacung.nhacung_id = donhang.nhacung_id);

Ví dụ - lệnh UPDATE

Dưới đây là ví dụ lệnh UPDATE dùng điều kiện EXISTS.

UPDATE nhacung
SET nhacung_ten = (SELECT khachhang.ten
FROM khachhang
WHERE khachhang.khachhang_id = nhacung.nhacung_id)
WHERE EXISTS (SELECT khachhang.ten
FROM khachhang
WHERE khachhang.khachhang_id = nhacung.nhacung_id);

Ví dụ - lệnh DELETE

Lệnh DELETE cũng có thể dùng với điều kiện EXISTS như dưới đây.

DELETE FROM danhba
WHERE EXITS (SELECT *
FROM nhanvien
WHERE nhanvien.ho = danhba.ho );

Cách dùng NOT với điều kiện EXIST trong SQL Server

Lệnh NOT được dùng để trích xuất những bản ghi điều kiện WHERE được cung cấp bởi người dùng là NOT TRUE hoặc FALSE.

Ví dụ này lấy STUDENT_NAME từ bảng STUDENT, cho điều kiện được đưa ra. Ví dụ: department.student_id=student.student_id là FALSE.

Mẫu code SQL Server

Kết quả:

Nếu thấy cả hai bảng đều rõ ràng, bạn sẽ biết cả hai tên được đưa ra, nằm trong STUDENT_ID không được nhắc tới ở bảng DEPARTMENT, vì thế, nó là kết quả.

Nếu không dùng lệnh NOT ở đây, nó sẽ cho kết quả là Neena và Johny.

Lưu ý: Dù STUDENT_ID cho STUDENT_NAME Kashish hiện nằm trong bảng DEPARTMENT. Nó chưa được hiển thị trong kết quả ở đây.

Kết quả

Trên đây là những điều cơ bản bạn cần biết về EXISTS trong SQL Server. Đây là một lệnh điều kiện hữu ích mà bạn nhất định nên biết khi tìm hiểu về SQL Server. Hi vọng những kiến thức cơ bản kể trên sẽ giúp bạn lập trình cùng SQL Server hiệu quả hơn.

Bài trước: Lệnh TRUNCATE TABLE trong SQL Server

Bài sau: Mệnh đề GROUP BY trong SQL Server

Thứ Năm, 06/04/2023 16:59
4,524 👨 89.187
0 Bình luận
Sắp xếp theo
    ❖ SQL Server