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 imbricate în interiorul unui selectați, selectați... ÎN, INSERARE... Instrucțiunea in, pe Ștergere sau actualizare sau în alt subinterogare.

Sintaxă

Puteți utiliza trei forme de sintaxă pentru a crea o subinterogare:

comparație [ORICE | TOATE | UNELE] (sqlstatement)

expresie [NU] ÎN (sqlstatement)

[NU] EXISTS (sqlstatement)

O subinterogare are următoarele părți:

Parte

Descriere

comparație

Un expresie și un operator de comparare care compară expresia cu rezultatele de subinterogare.

expresie

O expresie care se caută setul de rezultate de subinterogare.

instrucțiunesql

O instrucțiune SELECT, urmând regulile și aceeași formatare ca orice alte instrucțiune SELECT. Acesta trebuie să fie încadrată între paranteze.


Observații

Puteți utiliza o subinterogare în loc de o expresie în lista de câmpuri de o instrucțiune SELECT sau într-o unde sau clauza 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 unde sau care au clauza expresie.

Utilizați orice sau predicat, care sunt sinonime, pentru a regăsi înregistrări din interogarea principală care satisfac o comparație cu toate înregistrările regăsite în subinterogare. Următorul exemplu returnează toate produsele ale căror preț unitar este mai mare decât cea a orice produs vândute la o reducere de 25 % sau mai multe:

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

Utilizați predicat toate pentru a regăsi numai acele înregistrări din interogarea principală care satisfac o comparație cu toate înregistrările regăsite în subinterogare. Dacă ați modificat oricare pentru toate din exemplul anterior, interogarea ar returna doar acele produse ale căror preț unitar este mai mare decât cea a tuturor produselor vândute la o reducere de 25 % sau mai multe. Aceasta este mult mai restrictiv.

Utilizați predicat în pentru a regăsi numai acele înregistrări din interogarea principală pentru care unele înregistrări din subinterogare conține o valoare egală. Următorul exemplu returnează toate produsele cu o reducere de 25 % sau mai multe:

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

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

Utilizați predicat EXISTS (cu opțional nu cuvântul rezervat) în comparații adevărat/fals pentru a determina dacă subinterogare returnează toate înregistrările.

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 anterior, AS cuvânt rezervat 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.

×