Sottoquery SQL

Importante:  Il presente articolo è stato tradotto automaticamente, vedere la dichiarazione di non responsabilità. Per visualizzare la versione inglese dell'articolo, fare clic qui.

Una sottoquery è un'istruzione SELECT nidificata in un'istruzione SELECT, SELECT...INTO, INSERT...INTO, DELETE o UPDATE oppure in un'altra sottoquery.

Sintassi

Per creare una sottoquery è possibile utilizzare tre forme di sintassi:

confronto [ANY | ALL | SOME] (istruzionesql)

espressione [NOT] IN (istruzionesql)

[NOT] EXISTS (istruzionesql)

Una sottoquery è composta dalle parti seguenti:

Parte

Descrizione

confronto

espressione e operatore di confronto per eseguire il confronto tra l'espressione e i risultati della sottoquery.

espressione

Espressione che viene ricercata in base al set di risultati della sottoquery.

istruzionesql

Un'istruzione SELECT, formulata in base allo stesse regole e allo stesso formato di qualsiasi altra istruzione SELECT. È necessario racchiuderla tra parentesi.


Osservazioni

È possibile utilizzare una sottoquery invece di un'espressione nell'elenco di campi di un'istruzione SELECT oppure in una proposizione HAVING o WHERE. In una sottoquery, l'istruzione SELECT fornisce un insieme di uno o più valori specifici da valutare nell'espressione delle proposizioni WHERE o HAVING.

Utilizzare i predicati ANY o SOME, che sono sinonimi, per recuperare i record della query principale che soddisfano il confronto con uno dei record recuperati nella sottoquery. Nell'esempio seguente vengono restituiti tutti i prodotti il cui prezzo unitario è maggiore di quello dei prodotti venduti con uno sconto pari o superiore al 25 percento:

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

Utilizzare 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 si sostituisce ALL ad ANY, la query restituirà solo i prodotti il cui prezzo unitario è maggiore di quello di tutti i prodotti venduti con uno sconto pari o superiore al 25 percento. In tal modo viene ulteriormente ristretto l'ambito.

Utilizzare il predicato IN per recuperare solo i record della query principale che contengono valori uguali a un record della sottoquery. Nell'esempio che segue vengono restituiti tutti i prodotti con uno sconto pari o superiore al 25 percento:

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

D'altro canto, è possibile utilizzare NOT IN per recuperare solo i record della query principale che non contengono valori uguali a quelli di alcun record della sottoquery.

Utilizzare il predicato EXISTS in combinazione con la parola riservata facoltativa NOT nei confronti di tipo vero/falso per determinare se la sottoquery restituisce record.

È anche possibile utilizzare gli alias dei nomi di tabella in una sottoquery per fare riferimento alle tabelle elencate in una clausola FROM esterna alla sottoquery. Nell'esempio seguente restituisce i nomi dei dipendenti il cui stipendi sono maggiore o uguale a quello le retribuzioni Media di tutti i dipendenti con la stessa posizione. Nella tabella dipendenti viene assegnata 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 (quelli nella clausola WHERE). Le sottoquery come output (inclusi nell'elenco SELEZIONA) non sono consentite nelle query a campi incrociati.



Nota: Dichiarazione di non responsabilità per la traduzione automatica: Il presente articolo è stato tradotto tramite un software di traduzione automatica e non da una persona. Microsoft offre le traduzioni automatiche per consentire a coloro che non conoscono la lingua inglese di leggere gli articoli sui prodotti, sui servizi e sulle tecnologie Microsoft. Dal momento che l'articolo è stato tradotto automaticamente, potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli.

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×