SQL Server Subquery
Summary: în acest tutorial, veți afla despre subinterogarea SQL Server și cum să utilizați subinterogarea pentru interogarea datelor.
Introducere în interogarea SQL Server
O interogare este o interogare imbricată într-o altă instrucțiune precum SELECT
, INSERT
, UPDATE
sau DELETE
.
Să vedem următorul exemplu.
Luați în considerare orders
și customers
tabele din baza de date eșantion.
Următoarea afirmație arată cum se folosește o interogare în clauza WHERE
a unei SELECT
declarație pentru a găsi comenzile de vânzare ale clienților care localizează în New York
:
Iată rezultatul:
În acest exemplu, următoarea declarație este o interogare:
Code language: SQL (Structured Query Language) (sql)
Rețineți că trebuie să includeți întotdeauna SELECT
interogare a unei interogări între paranteze ()
.
O interogare este, de asemenea, cunoscută sub numele de interogare interioară sau selectare interioară, în timp ce instrucțiunea care conține interogarea este numită interogare externă sau externă:
SQL Serverul execută întregul exemplu de interogare de mai sus după cum urmează:
Mai întâi, execută subconsultarea pentru a obține o listă cu numerele de identificare ale clienților clienților care se află în New York
.
Code language: SQL (Structured Query Language) (sql)
În al doilea rând, SQL Server înlocuiește numerele de identificare ale clienților returnate de subconsultare în operatorul IN
și execută interogarea externă pentru a obține setul de rezultate finale.
După cum poți s Adică, utilizând subconsultarea, puteți combina doi pași împreună. Subinterogarea elimină necesitatea de a selecta numerele de identificare a clientului și de a le conecta la interogarea externă. Mai mult, interogarea în sine se ajustează automat de fiecare dată când datele clientului se modifică.
Subinterogare cuibărire
O subinterogare poate fi imbricată într-o altă subinterogare. SQL Server acceptă până la 32 de niveluri de cuibărire. Luați în considerare următorul exemplu:
Mai întâi, SQL Server execută următoarea subinterogare pentru a obține o listă cu numerele de identificare a mărcii Strider
și Trek
:
În al doilea rând, SQL Server calculează lista de prețuri medie a tuturor produselor care aparțin către acele mărci.
Code language: SQL (Structured Query Language) (sql)
În al treilea rând, SQL Server găsește produsele al căror preț de listă este mai mare decât prețul de listă mediu al tuturor produselor cu Strider
sau Trek
marca.
Tipuri de interogări SQL Server
Puteți utiliza o interogare în multe locuri:
- În locul unei expresii
- Cu
IN
sauNOT IN
- Cu
ANY
sauALL
- Cu
EXISTS
sauNOT EXISTS
- În
UPDATE
,DELETE
, sau declarațieINSERT
- În clauza
FROM
subconsultare SQL Server este utilizat în locul unei expresii
Dacă o subinterogare returnează o singură valoare, poate fi utilizată oriunde se folosește o expresie.
În exemplul următor, o subinterogare este utilizată ca expresie de coloană numită max_list_price
într-o declarație SELECT
.
Subinterogarea SQL Server este utilizată cu operatorul IN
O subinterogare care este utilizată cu IN
returnează un set de zero sau mai multe valori. După ce interogarea returnează valori, interogarea externă le folosește.
Următoarea interogare găsește numele tuturor produselor pentru biciclete montane și pentru biciclete de drum pe care le vând Magazinele de biciclete.
Această interogare este evaluată în doi pași:
- Mai întâi, interogarea interioară returnează o listă de numere de identificare a categoriilor care se potrivesc cu numele
Mountain Bikes
șicode
Biciclete rutiere. - În al doilea rând, aceste valori sunt înlocuite în interogarea externă care găsește numele produselor care au numărul de identificare a categoriei potrivite cu una dintre valorile din listă.
Subinterogarea SQL Server este utilizată cu ORICE operator
Subinterogarea este introdusă cu operatorul ANY
are următoarea sintaxă:
Code language: SQL (Structured Query Language) (sql)
Presupunând că subinterogarea returnează o listă cu valoarea v1, v2, … vn. Operatorul ANY
returnează TRUE
dacă unul dintr-o pereche de comparație (scalar_expression
, vi) evaluează la TRUE
; în caz contrar, returnează FALSE
.
De exemplu, următoarea interogare găsește produsele ale căror prețuri de listă sunt mai mari sau egale cu prețul de listă mediu al oricărei mărci de produse .
Pentru fiecare marcă, interogarea găsește prețul maxim de listă. Interogarea externă folosește aceste prețuri maxime și determină prețul listă al produsului individual care este mai mare sau egal cu prețul listă maxim al oricărei mărci.
Subinterogarea SQL Server este utilizată cu operatorul ALL
div id = „e12a4420d3”> operator are aceeași sintaxă ca și operatorul ANY
:
Code language: SQL (Structured Query Language) (sql)
Operatorul ALL
returnează TRUE
dacă toate perechile de comparație (scalar_expression
, vi) evaluează la TRUE
; în caz contrar, returnează FALSE
.
Următoarea interogare găsește produsele al căror preț de listă este mai mare sau egal cu prețul de listă mediu returnat de subinterogare:
Subinterogarea SQL Server este utilizată cu EXISTS sau NOT EXISTĂ
Următoarele ilustrează sintaxa unei subinterogări introduse cu operatorul EXISTS
:
Code language: SQL (Structured Query Language) (sql)
Operatorul EXISTS
returnează TRUE
dacă rezultatul subinterogării rezultă; în caz contrar, returnează FALSE
.
Pe de altă parte, NOT EXISTS
este opus EXISTS
operator.
Următoarea interogare găsește clienții care au cumpărat produse în 2017:
Dacă utilizați NOT EXISTS
în loc de EXISTS
, puteți găsi clienții care nu au cumpărat niciun produs în 2017.
Subinterogarea SQL Server din clauza FROM
Să presupunem că doriți să găsiți media sumei comenzilor tuturor personalului de vânzări. Pentru a face acest lucru, puteți găsi mai întâi numărul de comenzi de către personal:
Apoi, puteți aplica funcția AVG()
acestui set de rezultate. Deoarece o interogare returnează un set de rezultate care arată ca un tabel virtual, puteți plasa întreaga interogare în clauza FROM
a unei alte interogări ca aceasta:
Interogarea pe care o plasați în FROM
clauza trebuie să aibă un alias de tabel. În acest exemplu, am folosit t ca alias de tabelă pentru subinterogare. Pentru a obține rezultatul final, SQL Server are următorii pași:
- Executați interogarea în clauza
FROM
. - Utilizați rezultatul interogării și executați interogarea externă.
În acest tutorial, ați aflat despre conceptul de interogare SQL Server și cum să utilizați diferite tipuri de interogări pentru interogarea datelor.