Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

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

Sintaxă

Aveți posibilitatea să utilizați trei forme de sintaxă pentru a crea o subinterogare:

comparație [ORICARE | TOATE | SOME] (sqlstatement)

expresie [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

O subinterogare are următoarele componente:

Parte

Descriere

Comparaţie

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

expresie

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

instrucțiunesql

O instrucțiune SELECT, care urmează același format și aceleași reguli ca orice altă instrucțiune SELECT. Trebuie să fie încadrat între paranteze.


Observații

Puteți utiliza o subinterogare în locul unei expresii în lista de câmpuri a unei instrucțiuni SELECT sau într-o clauză WHERE sau HAVING. Într-o subinterogare, utilizați o instrucțiune SELECT pentru a furniza un set de una sau mai multe valori specifice de evaluat în expresia clauzei WHERE sau HAVING.

Utilizați predicatul ANY sau SOME, care sunt sinonime, pentru a regăsi înregistrările din interogarea principală care satisfac comparația cu toate înregistrările regăsite în subinterogare. Următorul exemplu returnează toate produsele al căror preț unitar este mai mare decât cel al oricărui produs vândut cu o reducere de cel puțin 25%:

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

Utilizați predicatul ALL pentru a regăsi numai înregistrările din interogarea principală care satisfac comparația cu toate înregistrările regăsite în subinterogare. Dacă ați modificat ANY la ALL în exemplul anterior, interogarea ar returna doar produsele al căror preț unitar este mai mare decât cel al tuturor produselor vândute cu o reducere de 25% sau mai mult. Acest lucru este mult mai restrictiv.

Utilizați predicatul IN pentru a regăsi numai înregistrările din interogarea principală pentru care unele înregistrări din subinterogare conțin o valoare egală. Următorul exemplu returnează toate produsele cu o reducere de 25% sau mai mult:

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

În schimb, aveți posibilitatea să utilizați NOT IN pentru a regăsi numai acele înregistrări din interogarea principală pentru care nicio înregistrare din subinterogare nu conține o valoare egală.

Utilizați predicatul EXISTS (cu cuvântul rezervat NOT opțional) în comparații 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 tabele listate într-o clauză FROM în afara subinterogării. Următorul exemplu returnează numele angajaților ale căror salarii sunt egale sau mai mari decât salariul mediu al tuturor angajaților care au același funcție. Tabelului Employees i se atribuie aliasul "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 tabel încrucișat, mai exact, ca predicate (cele din clauza WHERE). Subinterogările ca rezultate (cele din lista SELECT) nu sunt permise în interogările tabel încrucișat.



Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×