602SQL-Úplná dokumentace Index  

Subdotazy

SQL umožňuje, aby součást obecného výrazu resp. zobecněné tabulky tvořil další dotazový výraz, nazývaný zde zjednodušeně subdotaz. Subdotaz musí být uzavřen v kulatých závorkách. Jako subdotaz může stát kompletní dotazový výraz včetně dalších vnořených subdotazů. Uvnitř subdotazů lze použít i klauzuli LIMIT (obvykle spolu s ORDER BY).

Subdotazy lze rozlišovat podle různých kritérií. Např. podle počtu řádků a sloupců se rozlišují na tři druhy:

Jak je vidět z příkladů, subdotaz v dotazovém výrazu může být použit v části SELECT, FROM i WHERE. Použití subdotazů není omezeno jen na dotazové výrazy, ale jako výraz může být využit v mnoha jiných konstrukcích, jako např.:

IF EXISTS (SELECT admin_enabled FROM System 
           WHERE (admin_name=usr)AND(admin_password=pwd)AND(admin_enabled IS TRUE)) 
  THEN ...

Často se používá ještě jedno dělení subdotazů: ty, které se vyhodnotí jednou (jako příklady 2 nebo 4) a ty, které se vyhodnocují opakovaně (nazývané také Correlated Subqueries, jako příklady 1 nebo 3)