Database
 sql >> Baza danych >  >> RDS >> Database

Operator SQL EXISTS dla początkujących

W SQL EXISTS operator określa podzapytanie do przetestowania pod kątem istnienia wierszy. Zwraca TRUE gdy podzapytanie zwróci jeden lub więcej wierszy.

Podzapytanie to zapytanie zagnieżdżone w innym zapytaniu (lub nawet innym podzapytaniu)

Ten artykuł zawiera kilka podstawowych przykładów EXISTS operatora.

Tabele źródłowe

Poniższe tabele są używane jako przykłady na tej stronie.

SELECT * FROM PetTypes;
SELECT * FROM Pets;

Wynik:

+-------------+-----------+
| 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)

Przykład

Oto przykład demonstrujący EXISTS operatora.

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

Wynik:

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

Ten przykład pokazuje nam, ile rodzajów zwierząt znajduje się w naszym hotelu dla zwierząt. W rzeczywistości istnieją cztery typy zwierząt, ale tylko trzy z nich pasują do rzeczywistego zwierzaka w Pets tabela.

Daje to ten sam wynik, który otrzymalibyśmy z następującym zapytaniem, które używa IN operatora.

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

Korzystanie z NOT EXISTS

Moglibyśmy dodać NOT operatora, aby zanegować wyniki i zobaczyć, ile typów zwierząt nie w naszym hotelu dla zwierząt.

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

Wynik:

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

W tym przypadku nasza baza danych zawiera typ zwierzaka Rabbit , ale obecnie nie mamy żadnych królików jako zwierząt domowych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podłączyć bazę danych do Pythona

  2. Jak nie wyświetlać duplikatów w SQL?

  3. Jak utworzyć tabelę tymczasową w SQL?

  4. Zindeksowane widoki i statystyki

  5. Zgrupowane łączenie:zamawianie i usuwanie duplikatów