sql >> Database >  >> RDS >> Database

SQL BESTAAT-operator voor beginners

In SQL bestaat de EXISTS operator specificeert een subquery om te testen op het bestaan ​​van rijen. Het retourneert TRUE wanneer de subquery een of meer rijen retourneert.

Een subquery is een query die is genest in een andere query (of zelfs een andere subquery)

Dit artikel bevat enkele basisvoorbeelden van de EXISTS telefoniste.

Brontabellen

De volgende tabellen worden gebruikt voor de voorbeelden op deze pagina.

SELECT * FROM PetTypes;
SELECT * FROM Pets;

Resultaat:

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

Voorbeeld

Hier is een voorbeeld om de EXISTS te demonstreren telefoniste.

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

Resultaat:

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

Dit voorbeeld laat ons zien hoeveel soorten huisdieren er in ons dierenhotel zijn. Er zijn eigenlijk vier soorten huisdieren, maar slechts drie daarvan komen overeen met een echt huisdier in de Pets tafel.

Dit levert hetzelfde resultaat op dat we zouden hebben gekregen met de volgende zoekopdracht die de IN . gebruikt telefoniste.

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

Gebruik NOT EXISTS

We kunnen de NOT . toevoegen operator om de resultaten te negeren en te zien hoeveel huisdiertypes niet zijn in ons dierenhotel.

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

Resultaat:

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

In dit geval bevat onze database het huisdiertype Rabbit , maar we hebben momenteel geen konijnen als huisdier.


  1. PHP &MySQL:mysqli_num_rows() verwacht dat parameter 1 mysqli_result is, boolean gegeven

  2. Wat is Multi Dimension OLAP CUBE en geef voorbeeld kubus met meer dan 3 dimensies

  3. PostgreSQL-logboekanalyse met pgBadger

  4. Onze Microsoft Ignite-sessieopname is nu beschikbaar om te bekijken!