In SQL is een gecorreleerde subquery een subquery die verwijst naar een kolom uit de buitenste query. De subquery wordt herhaaldelijk uitgevoerd voor elke rij van de buitenste query, waarbij de waarden uit de huidige rij worden gebruikt om de subquery uit te voeren. Het resultaat van de subquery wordt vervolgens gebruikt bij de evaluatie van de buitenste query.
Gecorreleerde subquery's worden gebruikt voor rij-voor-rij-verwerking. Elke subquery wordt één keer uitgevoerd voor elke rij van de buitenste query.
Een gecorreleerde subquery wordt één keer geëvalueerd voor elke rij die door de bovenliggende instructie wordt verwerkt. De ouderverklaring kan een SELECTEER , UPDATE , of VERWIJDEREN stelling.
Syntaxis:
SELECTEER kolom1, kolom2, ….
VAN tafel1 buiten
WHERE kolom1-operator
(SELECTEER kolom1, kolom2
VAN tabel2
WAAR expr1 =
buitenste.expr2);
Een gecorreleerde subquery is een manier om elke rij in een tabel te lezen en waarden in elke rij te vergelijken met gerelateerde gegevens. Het wordt gebruikt wanneer een subquery een ander resultaat of een andere reeks resultaten moet retourneren voor elke kandidaatrij die door de hoofdquery wordt beschouwd. Met andere woorden: u kunt een gecorreleerde subquery gebruiken om een meerdelige vraag te beantwoorden waarvan het antwoord afhangt van de waarde in elke rij die door de bovenliggende instructie wordt verwerkt.
Geneste subquery's versus gecorreleerde subquery's
Bij een normale geneste subquery wordt het bestand inner SELECTEER de query wordt eerst uitgevoerd en één keer uitgevoerd, waarbij waarden worden geretourneerd die door de hoofdquery moeten worden gebruikt. Een gecorreleerde subquery wordt echter één keer uitgevoerd voor elke kandidaatrij die door de buitenste query wordt beschouwd. Met andere woorden: de innerlijke vraag wordt aangestuurd door de uiterlijke vraag.
OPMERKING: Je kunt ook gebruik maken van de ELK En ALLE operator in een gecorreleerde subquery. VOORBEELD van gecorreleerde subquery's: Vind alle werknemers die meer verdienen dan het gemiddelde salaris op hun afdeling.
Vraag:
SELECT last_name, salary, department_id FROM employees outer WHERE salary>(SELECTEER AVG(salaris) VAN werknemers WAAR afdeling_id = buitenste.afdeling_id groep op afdeling_id);>
Ander gebruik van correlatie is in UPDATE En VERWIJDEREN
GECOMBINEERDE UPDATE
UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);>
Gebruik een gecorreleerde subquery om rijen in de ene tabel bij te werken op basis van rijen uit een andere tabel.
GECORRELEERD VERWIJDEREN
DELETE FROM table1 alias1 WHERE column1 operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);>
Gebruik een gecorreleerde subquery om rijen in de ene tabel te verwijderen op basis van de rijen uit een andere tabel.
voor loops java
De EXISTS-operator gebruiken
De EXISTS-operator test of er rijen voorkomen in de resultatenset van de subquery. Als een subqueryrijwaarde wordt gevonden, wordt de voorwaarde gemarkeerd WAAR en de zoekopdracht gaat niet verder in de binnenquery, en als deze niet wordt gevonden, wordt de voorwaarde gemarkeerd ONWAAR en de zoektocht gaat verder in de innerlijke zoekopdracht.
VOORBEELD van het gebruik van de EXIST-operator:
Zoek medewerkers aan wie ten minste één persoon rapporteert.
Vraag:
SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>
UITGANG:

VOORBEELD van het gebruik van de operator NOT EXIST
Vind alle afdelingen die geen medewerkers hebben.
Vraag:
SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>
UITGANG:

Veelgestelde vragen over SQL-gecorreleerde subquery's - Veelgestelde vragen
Wat is het verschil tussen gecorreleerde subquery's en reguliere subquery's?
Reguliere subquery's (niet-gecorreleerd) zijn onafhankelijk van de buitenste query en worden slechts één keer geëvalueerd voordat de hoofdquery wordt uitgevoerd. Gecorreleerde subquery's zijn daarentegen afhankelijk van de buitenste query en worden voor elke rij van de hoofdquery uitgevoerd.
Wanneer moet ik gecorreleerde subquery's gebruiken?
Gecorreleerde subquery's zijn handig wanneer u het resultaat van de buitenste query moet filteren op basis van een voorwaarde waarvoor verwijzingen naar waarden uit de buitenste query zelf vereist zijn. Ze worden vaak gebruikt in scenario's waarin de voorwaarde afhankelijk is van gegevens uit gerelateerde tabellen.