SQL EXISTS




  SQL > SQL Avanzato > Exists

Nel paragrafo precedente, è stato utilizzato l’operatore IN per collegare la query interna e la query esterna a un’istruzione di sottoquery. IN non rappresenta l’unico modo per realizzare questa operazione. Possono infatti essere utilizzati molti operatori come: >, <, oppure =. EXISTS è un operatore speciale che verrà preso in esame in questo paragrafo.

Mediante l’operatore EXISTS viene semplicemente verificato se la query interna restituisce ogni riga. Se ciò avviene, la query esterna viene elaborata. In caso contrario, la query esterna non viene eseguita e l’intera istruzione SQL non fornisce alcun risultato.

La sintassi per EXISTS è:

SELECT "nome_di_colonna_1"
FROM "nome_della_tabella_1"
WHERE EXISTS
(SELECT *
FROM "nome_della_tabella_2"
WHERE "condizionale");

Si noti che al posto di * è possibile selezionare una o più colonne della query interna. L’effetto sarà identico.

Si proceda utilizzando le stesse tabelle di esempio:

Tabella Store_Information
Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabella Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

Viene rilasciata la seguente query SQL:

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

Viene restituito il seguente risultato:

SUM(Sales)
2750

In un primo momento, questa operazione può creare qualche confusione in quanto nella sottoquery è inclusa la condizione [region_name = 'West'], eppure la query ha sommato i negozi relativi a tutte le regioni. Ma mediante un controllo più accurato, si può vedere che, poiché la sottoquery restituisce più di 0 righe, la condizione EXISTS è effettivamente vera e la condizione posizionata all’interno della query interna non influenza il modo in cui viene eseguita la query esterna.

SQL CASE >>



Copyright © 2014   1keydata.com   Tutti i diritti riservati.



SQL Avanzato
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Sottoquery
SQL EXISTS
SQL CASE
SQL NULL
SQL ISNULL
SQL IFNULL
SQL NVL
SQL COALESCE
SQL NULLIF




Indice del sito