Subinterogări SQL

Notă:  Dorim să vă oferim cel mai recent conținut de ajutor, cât mai rapid posibil, în limba dvs. Această pagină a fost tradusă automatizat și poate conține erori gramaticale sau inexactități. Scopul nostru este ca acest conținut să vă fie util. Vă rugăm să ne spuneți dacă informațiile v-au fost utile, în partea de jos a acestei pagini. Aici se află articolul în limba engleză , ca să îl puteți consulta cu ușurință.

O subinterogare este o instrucțiune SELECT imbricată într-o instrucțiune SELECT, SELECT...INTO, INSERT...INTO, DELETE sau UPDATE, sau într-o altă subinterogare.

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ă 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.



Extindeți-vă competențele Office
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.

×