SQL EXISTS





SQL > Geavanceerde SQL > Exists

In het vorig deel werd IN gebruikt om de inner en de outer query in een subquery-instructie te verbinden. IN is niet de enige mogelijke manier -- er kunnen veel operatoren worden gebruikt, zoals >, <, ou =. EXISTS is een speciale operator die in dit deel wordt uiteengezet.

EXISTS test of de inner query een rij retourneert. Als dit zo is, dan gaat de outer query verder. Als dit niet het geval is, wordt de outer query niet uitgevoerd en retourneert de volledige SQL-instructie niets.

De syntaxis voor EXISTS is:

SELECT "kolom_naam1"
FROM "tabel_naam1"
WHERE EXISTS
(SELECT *
FROM "tabel_naam2"
WHERE "Voorwaarde");

Bemerk dat u in plaats van * één of meer kolommen kunt selecteren in de inner query. Het resultaat zal hetzelfde zijn.

Neem de volgende voorbeeldtabellen:

Tabel Store_Information
 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  05-Jan-1999 
 San Diego 250  07-Jan-1999 
 Los Angeles 300  08-Jan-1999 
 Boston 700  08-Jan-1999 

Tabel Geography
 Region_Name  Store_Name 
 East  Boston 
 East  New York 
 West  Los Angeles 
 West  San Diego 

en schrijf de volgende SQL-query:

SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE Region_Name = 'West');

dan krijgt u het volgend resultaat:

SUM(Sales)
2750

Dit kan eerst verwarrend lijken omdat de subquery de voorwaarde [region_name = 'West'] bevat, en de query toch winkels voor alle regio's optelt. Bij nader inzien ziet u dat vermits de subquery meer dan 0 rijen retourneert, de voorwaarde EXISTS waar is en de voorwaarde binnen de inner query geen invloed heeft op de uitvoering van de outer query.

SQL CASE >>

Deze pagina is voor het laatst bijgewerkt op 13-06-2022



Copyright © 2024   1keydata.com   Alle rechten voorbehouden