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 sau NOT IN
  • Cu ANY sau ALL
  • Cu EXISTS sau NOT EXISTS
  • În UPDATE, DELETE, sau declarație INSERT
  • Î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:

  1. Mai întâi, interogarea interioară returnează o listă de numere de identificare a categoriilor care se potrivesc cu numele Mountain Bikes și code Biciclete rutiere.
  2. Î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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *