Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Una sottoquery è un'istruzione SELECT annidata all'interno di select, SELECT... IN, INSERISCI... ISTRUZIONE INTO, DELETE o UPDATE o all'interno di un'altra sottoquery.

Sintassi

È possibile usare tre forme di sintassi per creare una sottoquery:

confronto [ANY | ALL | SOME] (istruzione sql)

espressione [NOT] IN (istruzione sql)

[NON] EXISTS (istruzione sql)

Una sottoquery è composta da queste parti:

Parte

Descrizione

Confronto

Un espressione e un operatore di confronto che confronta l'espressione con i risultati della sottoquery.

espressione

Espressione per cui viene eseguita la ricerca nel set di risultati della sottoquery.

istruzionesql

Un'istruzione SELECT, che segue lo stesso formato e le stesse regole di qualsiasi altra istruzione SELECT. Deve essere racchiuso tra parentesi.


Note

È possibile usare una sottoquery invece di un'espressione nell'elenco dei campi di un'istruzione SELECT o in una clausola WHERE o HAVING. In una sottoquery si usa un'istruzione SELECT per fornire un set di uno o più valori specifici da valutare nell'espressione della clausola WHERE o HAVING.

Usare il predicato ANY o SOME, sinonimo, per recuperare record nella query principale che soddisfano il confronto con tutti i record recuperati nella sottoquery. L'esempio seguente restituisce tutti i prodotti il cui prezzo unitario è maggiore di quello di qualsiasi prodotto venduto con uno sconto del 25% o più:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Usare il predicato ALL per recuperare solo i record della query principale che soddisfano il confronto con tutti i record recuperati nella sottoquery. Se nell'esempio precedente è stato eseguita la modifica di QUALSIASI in TUTTI, la query restituirà solo i prodotti il cui prezzo unitario è maggiore di quello di tutti i prodotti venduti con uno sconto del 25% o più. Questo è molto più restrittivo.

Usare il predicato IN per recuperare solo i record nella query principale per cui alcuni record nella sottoquery contengono un valore uguale. L'esempio seguente restituisce tutti i prodotti con uno sconto del 25% o più:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Al contrario, è possibile usare NOT IN per recuperare solo i record nella query principale per cui nessun record nella sottoquery contiene un valore uguale.

Usare il predicato EXISTS (con la parola riservata NOT facoltativa) nei confronti vero/falso per determinare se la sottoquery restituisce record.

È anche possibile usare gli alias dei nomi di tabella in una sottoquery per fare riferimento alle tabelle elencate in una clausola FROM all'esterno della sottoquery. L'esempio seguente restituisce i nomi dei dipendenti i cui stipendi sono uguali o maggiori dello stipendio medio di tutti i dipendenti con la stessa posizione lavorativa. Alla tabella Dipendenti viene assegnato l'alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Nell'esempio precedente la parola riservata AS è facoltativa.

Alcune sottoquery sono consentite nelle query a campi incrociati, in particolare come predicati (quelle della clausola WHERE). Le sottoquery come output (quelle nell'elenco SELECT) non sono consentite nelle query a campi incrociati.



Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×