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_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabel Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan 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 © 2014   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