Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Toán tử SQL EXISTS cho người mới bắt đầu

Trong SQL, EXISTS toán tử chỉ định một truy vấn con để kiểm tra sự tồn tại của các hàng. Nó trả về TRUE khi truy vấn con trả về một hoặc nhiều hàng.

Truy vấn con là một truy vấn được lồng vào bên trong một truy vấn khác (hoặc thậm chí là một truy vấn con khác)

Bài viết này chứa một số ví dụ cơ bản về EXISTS nhà điều hành.

Bảng nguồn

Các bảng sau được sử dụng cho các ví dụ trên trang này.

SELECT * FROM PetTypes;
SELECT * FROM Pets;

Kết quả:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
| 4           | Rabbit    |
+-------------+-----------+
(4 rows affected)
+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

Ví dụ

Dưới đây là một ví dụ để chứng minh EXISTS nhà điều hành.

SELECT 
    pt.PetTypeId,
    pt.PetType
FROM PetTypes pt
WHERE EXISTS ( 
    SELECT p.PetTypeId 
    FROM Pets p 
    WHERE p.PetTypeId = pt.PetTypeId 
    );

Kết quả:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Ví dụ này cho chúng ta thấy có bao nhiêu loại vật nuôi trong khách sạn vật nuôi của chúng tôi. Thực tế có bốn loại thú cưng, nhưng chỉ có ba loại trong số đó phù hợp với một thú cưng thực tế trong Pets bảng.

Điều này cung cấp cùng một kết quả mà chúng tôi sẽ nhận được với truy vấn sau sử dụng IN nhà điều hành.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Sử dụng NOT EXISTS

Chúng tôi có thể thêm NOT toán tử để phủ định kết quả và xem có bao nhiêu loại vật nuôi không trong khách sạn thú cưng của chúng tôi.

SELECT 
    pt.PetTypeId,
    pt.PetType
FROM PetTypes pt
WHERE NOT EXISTS ( 
    SELECT p.PetTypeId 
    FROM Pets p 
    WHERE p.PetTypeId = pt.PetTypeId 
    );

Kết quả:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 4           | Rabbit    |
+-------------+-----------+

Trong trường hợp này, cơ sở dữ liệu của chúng tôi chứa một loại vật nuôi là Rabbit , nhưng chúng tôi hiện không có bất kỳ con thỏ nào làm thú cưng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm ngày vào ngày trong T-SQL

  2. Mô hình dữ liệu bảng lương

  3. Phân mảnh chỉ mục được nhóm không mong muốn

  4. Beverly Hills 90210 và ZIP + 4:Xử lý địa chỉ trong mô hình dữ liệu

  5. Kết nối Ứng dụng 32-bit với jBASE