Samenvatting: in deze tutorial leert u hoe u de PostgreSQL EXISTS operator kunt gebruiken om te testen op het bestaan van rijen in een subquery.

Inleiding tot PostgreSQL EXISTS operator

De EXISTS operator is een booleaanse operator die het bestaan van rijen in een subquery controleert.

Het volgende illustreert de syntaxis van de EXISTS operator:

EXISTS (subquery)

De EXISTS accepteert een argument dat een subquery is.

Als de subquery ten minste één rij retourneert, is het resultaat van EXISTS waar. Als de subquery geen rij retourneert, is het resultaat van EXISTS false.

De EXISTS operator wordt vaak gebruikt met de correlated subquery.

Het resultaat van de EXISTS operator hangt af van de vraag of een rij door de subquery is geretourneerd, en niet van de rij-inhoud. Daarom zijn kolommen die voorkomen op de SELECT clausule van de subquery niet van belang.

Om deze reden is de gebruikelijke coderingsconventie om EXISTS in de volgende vorm te schrijven:

Merk op dat als de subquery NULL retourneert, het resultaat van EXISTS true is.

PostgreSQL EXISTS voorbeelden

We zullen de volgende customeren payment tabellen in de voorbeeld database gebruiken voor de demonstratie:

klant- en betalingstabellen

A) Zoek klanten die ten minste één betaling hebben waarvan het bedrag hoger is dan 11.

Het volgende statement retourneert klanten die ten minste één huur hebben betaald met een bedrag dat hoger is dan 11:

SELECT first_name, last_nameFROM customer cWHERE EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

De query retourneert de volgende uitvoer:

PostgreSQL EXISTS example

In dit voorbeeld wordt voor elke klant in de tabel customer, controleert de subquery de tabel payment om na te gaan of die klant ten minste één betaling heeft verricht (p.customer_id = c.customer_id) en het bedrag groter is dan 11 ( amount > 11)

B) NOT EXISTS voorbeeld

De NOT operator ontkent het resultaat van de EXISTS operator. De NOT EXISTS is tegengesteld aan EXISTS. Het betekent dat als de subquery geen rij retourneert, de NOT EXISTS true retourneert. Als de subquery een of meer rijen retourneert, retourneert de NOT EXISTS false.

Het volgende voorbeeld retourneert klanten die geen betaling hebben gedaan die groter is dan 11.

SELECT first_name, last_nameFROM customer cWHERE NOT EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

Hier volgt de uitvoer:

PostgreSQL NOT EXISTS voorbeeld

C) EXISTS en NULL

Als de subquery NULL teruggeeft, geeft EXISTS true terug. Zie het volgende voorbeeld:

SELECTfirst_name,last_nameFROMcustomerWHEREEXISTS( SELECT NULL )ORDER BYfirst_name,last_name;
Code language: SQL (Structured Query Language) (sql)

In dit voorbeeld retourneerde de subquery NULL, daarom retourneerde de query alle rijen uit de customer tabel.

PostgreSQL EXIST met NULL voorbeeld

In deze tutorial hebt u geleerd hoe u de PostgreSQL EXISTS kunt gebruiken om te testen op het bestaan van rijen in de subquery.

  • Was deze handleiding nuttig?
  • Ja/Nee

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *