Subinterogări SQL

Important : Acest articol este tradus automat, consultați exonerarea de răspundere. Versiunea în limba engleză a acestui articol se poate găsi aici pentru referință.

O instrucţiune SELECT imbricată într-o instrucţiune SELECT, SELECT...INTO, INSERT...INTO, DELETE sau UPDATE, sau într-o altă interogare.

Sintaxă

Se pot utiliza trei forme de sintaxă pentru a crea o subinterogare:

comparație [ANY | ALL | SOME] (instrucțiunesql)

expresie [NOT] IN (instrucțiunesql)

[NOT] EXISTS (instrucțiunesql)

O subinterogare are aceste părți:

Parte

Descriere

comparație

O expresie și un operator de comparație care compară expresia cu rezultatul subinterogării.

expresie

O expresie pentru care se caută setul de rezultate al subinterogării.

instrucțiunesql

O instrucțiune SELECT, definită de același format și aceleași reguli ca orice instrucțiune SELECT. Trebuie să fie încadrată de paranteze.


Remarci

Se poate utiliza o subinterogare în loc de o expresie în lista de câmpuri a unei instrucţiuni SELECT sau într-o clauză WHERE sau HAVING. Într-o subinterogare, se utilizează o instrucţiune SELECT pentru a furniza un set de una sau mai multe valori specificate pentru a fi evaluate în expresia clauzei WHERE sau HAVING.

Pentru a regăsi înregistrări din interogarea principală care să satisfacă comparaţia cu unele din înregistrările regăsite în subinterogare se utilizează predicatele ANY sau SOME, care sunt sinonime. Următorul exemplu returnează toate produsele al căror preţ este mai mare decât al unui produs vândut cu reducere de 25 de procente sau mai mult:

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

Predicatul ALL se utilizează pentru a regăsi numai acele înregistrări din interogarea principală care satisfac comparaţia cu toate înregistrările regăsite în subinterogare. Dacă se înlocuieşte ANY cu ALL în exemplul precedent, interogarea va returna numai acele produse al căror preţ unitar este mai mare decât cel al tuturor produselor vândute cu o reducere de 25 de procente sau mai mult. Este mult mai restrictiv.

Predicatul IN se utilizează pentru a regăsi numai acele înregistrări din interogarea principală pentru care unele înregistrări din subinterogare conţin valori egale. Următorul exemplu returnează toate produsele cu o reducere de 25 de procente sau mai mult:

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

Dimpotrivă, predicatul NOT IN se utilizează pentru a regăsi numai acele înregistrări din interogarea principală pentru care nici o înregistrare din subinterogare nu conţine o valoare egală.

Utilizați predicatul EXISTS (la care se poate adăuga cuvântul rezervat NOT) în comparații de tipul adevărat/fals pentru a determina dacă subinterogarea returnează înregistrări.

De asemenea, puteți utiliza aliasuri de nume de tabel într-o subinterogare pentru a face referire la tabelele listate într-o clauză FROM din afara subinterogare. Următorul exemplu returnează numele angajații ale căror salarii sunt egal cu sau mai mare decât salarizare medie de toți angajații cu același ocupație. Tabelul angajați este dat 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;

În exemplul precedent, cuvânt rezervat AS este opțional.

Unele subinterogări sunt permise în interogările de tip tabel încrucișat, mai exact, ca predicate (cele în clauza WHERE). Subinterogări ca rezultat (cele din lista SELECTARE) nu sunt permise în interogările de tip tabel încrucișat.



Notă : Exonerare de răspundere pentru traducere automată: Acest articol a fost tradus de un sistem computerizat, fără intervenție umană. Microsoft oferă aceste traduceri automate pentru a ajuta utilizatorii vorbitori de alte limbi decât engleza să beneficieze de conținutul despre produsele, serviciile și tehnologiile Microsoft. Pentru că articolul a fost tradus de un computer, poate conține erori de vocabular, sintaxă sau gramatică.

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×