Toán tử SQL EXISTS

Toán tử EXISTS trong SQL được sử dụng để kiểm tra sự tồn tại của ít nhất một bản ghi thỏa mãn điều kiện trong một truy vấn con (subquery). Nó trả về TRUE nếu truy vấn con trả về ít nhất một hàngFALSE nếu truy vấn con không trả về bất kỳ hàng nào.

exists

Cú pháp:

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

Giải thích:

  • SELECT, FROM: Giống như trong các câu lệnh SQL khác.
  • table_name: Bảng chính chứa dữ liệu.
  • WHERE: Điều kiện lọc dữ liệu chính.
  • EXISTS (subquery): Kiểm tra sự tồn tại của các bản ghi thỏa mãn điều kiện trong truy vấn con.

Ví dụ:

--Tìm kiếm tất cả khách hàng đã từng đặt hàng:
SELECT *
FROM Customers
WHERE EXISTS (
  SELECT *
  FROM Orders
  WHERE Orders.CustomerID = Customers.CustomerID
);

--Tìm kiếm tất cả sản phẩm thuộc các danh mục có sản phẩm đang được bán:
SELECT *
FROM Products
WHERE EXISTS (
  SELECT *
  FROM OrderItems
  WHERE OrderItems.ProductID = Products.ProductID
);

--Tìm kiếm tất cả nhân viên có lương cao hơn lương trung bình của phòng ban:
SELECT *
FROM Employees
WHERE EXISTS (
  SELECT *
  FROM (
    SELECT AVG(Salary) AS AverageSalary
    FROM Employees
    WHERE DepartmentID = Employees.DepartmentID
  ) AS AvgSalary
  WHERE Employees.Salary > AvgSalary.AverageSalary
);

Lưu ý:

  • Toán tử EXISTS chỉ kiểm tra sự tồn tại của các bản ghi, không trả về dữ liệu từ truy vấn con.
  • Bạn có thể sử dụng toán tử NOT EXISTS để kiểm tra xem không có bất kỳ bản ghi nào thỏa mãn điều kiện trong truy vấn con.
  • Toán tử EXISTS thường được sử dụng để thay thế cho các phép JOIN phức tạp trong một số trường hợp.

 

Datalinks.vn

Hello các bạn, mình là Dương Nguyễn tác giả của blog này. Với gần 20 năm làm việc trong lĩnh vực CNTT, VT trong và ngoài nước, mong muốn được chia sẻ kiến thức và kinh nghiệm về database với các bạn đam mê và quan tâm đến lĩnh vực này. Đặc biệt là #OracleDatabase hoặc luyện thi #OCP database admin. Các bạn cần người đồng hành thì alo mình nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận