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 i tuoi commenti e suggerimenti

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

×