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




Copyright © 2013   1keydata.com   Alle rechten voorbehouden.



Geavanceerde SQL
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Subquery
SQL EXISTS
SQL CASE
SQL NULL
SQL ISNULL
SQL IFNULL
SQL NVL
SQL COALESCE
SQL NULLIF




Site-overzicht