logo

Subinterogări corelate SQL

În SQL, o subinterogare corelată este o subinterogare care se referă la o coloană din interogarea exterioară. Subinterogarea este executată în mod repetat pentru fiecare rând al interogării externe, folosind valorile din rândul curent pentru a efectua subinterogarea. Rezultatul subinterogării este apoi utilizat în evaluarea interogării externe.

Subinterogările corelate sunt utilizate pentru procesarea rând cu rând. Fiecare subinterogare este executată o dată pentru fiecare rând al interogării externe.



O subinterogare corelată este evaluată o dată pentru fiecare rând procesat de instrucțiunea părinte. Declarația părinte poate fi a SELECTAȚI , ACTUALIZAȚI , sau ȘTERGE afirmație.

Sintaxă:

SELECTAȚI coloana1, coloana2, ….

DIN tabelul 1 exterior



operatorul WHERE coloana1

(SELECT coloana 1, coloana 2

DIN tabelul 2



UNDE expr1 =

exterior.expr2);

O subinterogare corelată este o modalitate de a citi fiecare rând dintr-un tabel și de a compara valorile din fiecare rând cu datele asociate. Este folosit ori de câte ori o subinterogare trebuie să returneze un rezultat sau un set diferit de rezultate pentru fiecare rând candidat luat în considerare de interogarea principală. Cu alte cuvinte, puteți folosi o subinterogare corelată pentru a răspunde la o întrebare cu mai multe părți al cărei răspuns depinde de valoarea din fiecare rând procesat de instrucțiunea părinte.

Subinterogări imbricate versus subinterogări corelate

Cu o subinterogare imbricată normală, interogarea interioară SELECTAȚI interogarea rulează prima și se execută o dată, returnând valori care urmează să fie utilizate de interogarea principală. O subinterogare corelată, totuși, se execută o dată pentru fiecare rând candidat luat în considerare de interogarea externă. Cu alte cuvinte, interogarea interioară este condusă de interogarea exterioară.

NOTĂ: De asemenea, puteți utiliza ORICE și TOATE operator într-o subinterogare corelată. EXEMPLU de subinterogări corelate: Găsiți toți angajații care câștigă mai mult decât salariul mediu în departamentul lor.

Interogare:

SELECT last_name, salary, department_id  FROM employees outer  WHERE salary>(SELECTARE AVG(salariu) FROM angajații WHERE Department_id = outer.department_id group by department_id);>>> 

O altă utilizare a corelației este în ACTUALIZAȚI și ȘTERGE

UPDATE CORELATE

Utilizați o subinterogare corelată pentru a actualiza rândurile dintr-un tabel pe baza rândurilor dintr-un alt tabel.

ȘTERGERE CORELATE

DELETE FROM table1 alias1  WHERE column1 operator  (SELECT expression  FROM table2 alias2  WHERE alias1.column = alias2.column);>

Utilizați o subinterogare corelată pentru a șterge rânduri dintr-un tabel pe baza rândurilor dintr-un alt tabel.

tipuri de date de referință în java

Folosind operatorul EXISTS

Operatorul EXISTS testează existența rândurilor în setul de rezultate al subinterogării. Dacă se găsește o valoare de rând de subinterogare, condiția este semnalată ADEVĂRAT iar căutarea nu continuă în interogarea interioară, iar dacă nu este găsită atunci condiția este semnalată FALS iar căutarea continuă în interogarea interioară.
EXEMPLU de utilizare a operatorului EXIST:
Găsiți angajați care au cel puțin o persoană raportată la ei.

Interogare:

SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>

IEȘIRE:

EXEMPLU de utilizare a operatorului NOT EXIST
Găsiți toate departamentele care nu au niciun angajat.

Interogare:

SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>

IEȘIRE:

Întrebări frecvente despre subinterogări corelate SQL – Întrebări frecvente

Care este diferența dintre subinterogările corelate și subinterogările obișnuite?

Subinterogările obișnuite (necorelate) sunt independente de interogarea exterioară și sunt evaluate o singură dată înainte de rularea interogării principale. În schimb, subinterogările corelate depind de interogarea exterioară și sunt executate pentru fiecare rând al interogării principale.

Când ar trebui să folosesc subinterogări corelate?

Subinterogările corelate sunt utile atunci când trebuie să filtrați rezultatul interogării externe pe baza unei anumite condiții care necesită referirea valorilor din interogarea exterioară în sine. Ele sunt utilizate în mod obișnuit în scenariile în care condiția se bazează pe datele din tabelele aferente.