Nidificato SELECT in SQL Server
-
08-10-2019 - |
Domanda
Perché non lo fa il seguente lavoro?
SELECT name FROM (SELECT name FROM agentinformation)
Credo che la mia comprensione di SQL è sbagliato, perché avrei pensato che questo sarebbe tornata la stessa cosa di
SELECT name FROM agentinformation
non l'istruzione SELECT interna creare una lista di prodotti che l'istruzione SELECT esterna interroga allora?
Soluzione
È necessario alias subquery.
SELECT name FROM (SELECT name FROM agentinformation) a
o per essere più esplicito
SELECT a.name FROM (SELECT name FROM agentinformation) a
Altri suggerimenti
Risposta fornito da Joe Stefanelli è già corretta.
SELECT name FROM (SELECT name FROM agentinformation) as a
Abbiamo bisogno di fare alias sottoquery perché interrogazione ha bisogno oggetto tabella che avremo da fare un alias sottoquery. Concettualmente, i risultati subquery sono sostituiti nella query esterna. Come abbiamo bisogno oggetto tabella nella interrogazione esterna, è necessario creare un alias di query interna.
Le dichiarazioni che includono una sottoquery richiede solitamente uno dei seguenti formati:
- WHERE [NOT] IN (subquery)
- DOVE espressione comparison_operator [QUALSIASI | ALL] (subquery)
- dove [NOT] ESISTE (subquery)
Verificare la presenza di più subquery governa e subquery tipi .
Altri esempi di nidificati sottoquery.
-
IN / NOT IN - Questo operatore prende l'output di query interna dopo query interna viene eseguito che può essere zero o più valori e trasmetterli a query esterna. La query esterna poi recupera tutta la corrispondenza [IN operator] o non corrispondenza non [NOT IN operator] righe.
-
QUALSIASI - [> QUALSIASI o qualsiasi operatore prende la lista dei valori prodotti da query interna e recupera tutti i valori che sono superiori al valore minimo della lista. Il
es. > ANY (100.200.300), l'operatore ANY preleverà tutti i valori superiori a 100.
- ALL - [> ALL o ALL operatore preleva l'elenco dei valori prodotti da query interna e recupera tutti i valori che sono maggiori del massimo della lista. Il
es. > ALL (100.200.300), l'operatore ALL preleverà tutti i valori superiori a 300.
- ESISTE - La parola chiave EXISTS produce un valore booleano [TRUE / FALSE]. Questo esiste verifica l'esistenza delle righe restituite dalla query sub.