In SQL, una sottoquery correlata è una sottoquery che fa riferimento a una colonna della query esterna. La sottoquery viene eseguita ripetutamente per ogni riga della query esterna, utilizzando i valori della riga corrente per eseguire la sottoquery. Il risultato della sottoquery viene quindi utilizzato nella valutazione della query esterna.
Le sottoquery correlate vengono utilizzate per l'elaborazione riga per riga. Ogni sottoquery viene eseguita una volta per ogni riga della query esterna.
Una sottoquery correlata viene valutata una volta per ogni riga elaborata dall'istruzione principale. L'istruzione genitore può essere a SELEZIONARE , AGGIORNAMENTO , O ELIMINARE dichiarazione.
Sintassi:
SELEZIONA colonna1, colonna2, ….
DAL tavolo1 esterno
WHERE operatore colonna1
(SELEZIONA colonna1, colonna2
DALLA tabella2
DOVE espressione1 =
esterno.espr2);
Una sottoquery correlata è un modo per leggere ogni riga di una tabella e confrontare i valori in ciascuna riga con i dati correlati. Viene utilizzato ogni volta che una sottoquery deve restituire un risultato diverso o un insieme di risultati per ciascuna riga candidata considerata dalla query principale. In altre parole, è possibile utilizzare una sottoquery correlata per rispondere a una domanda in più parti la cui risposta dipende dal valore in ciascuna riga elaborata dall'istruzione principale.
Sottoquery nidificate e sottoquery correlate
Con una normale sottoquery nidificata, inner SELEZIONARE la query viene eseguita per prima ed eseguita una volta, restituendo i valori che devono essere utilizzati dalla query principale. Una sottoquery correlata, tuttavia, viene eseguita una volta per ogni riga candidata considerata dalla query esterna. In altre parole, la query interna è guidata dalla query esterna.
NOTA: Puoi anche usare il QUALUNQUE E TUTTO operatore in una sottoquery correlata. ESEMPIO di sottoquery correlate: Trova tutti i dipendenti che guadagnano più dello stipendio medio nel loro dipartimento.
Domanda:
SELECT last_name, salary, department_id FROM employees outer WHERE salary>(SELECT AVG(stipendio) FROM dipendenti WHERE id_dipartimento = gruppo id_dipartimento esterno per id_dipartimento);>
Un altro uso della correlazione è in AGGIORNAMENTO E ELIMINARE
AGGIORNAMENTO CORRELATO
UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);>
Utilizzare una sottoquery correlata per aggiornare le righe di una tabella in base alle righe di un'altra tabella.
CANCELLAZIONE CORRELATA
DELETE FROM table1 alias1 WHERE column1 operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);>
Utilizzare una sottoquery correlata per eliminare le righe in una tabella in base alle righe di un'altra tabella.
come restituire l'array in Java
Utilizzando l'operatore EXISTS
L'operatore EXISTS verifica l'esistenza di righe nel set di risultati della sottoquery. Se viene trovato un valore di riga della sottoquery, la condizione viene contrassegnata VERO e la ricerca non continua nella query interna e, se non viene trovata, la condizione viene contrassegnata FALSO e la ricerca continua nella query interiore.
ESEMPIO di utilizzo dell'operatore EXIST:
Trova dipendenti che hanno almeno una persona che fa capo a loro.
Domanda:
SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>
PRODUZIONE :

ESEMPIO di utilizzo dell'operatore NOT EXIST
Trova tutti i dipartimenti che non hanno dipendenti.
Domanda:
SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>
PRODUZIONE :

Domande frequenti sulle sottoquery correlate a SQL: domande frequenti
Qual è la differenza tra sottoquery correlate e sottoquery regolari?
Le sottoquery regolari (non correlate) sono indipendenti dalla query esterna e vengono valutate solo una volta prima dell'esecuzione della query principale. Al contrario, le sottoquery correlate dipendono dalla query esterna e vengono eseguite per ogni riga della query principale.
Quando dovrei utilizzare le sottoquery correlate?
Le sottoquery correlate sono utili quando è necessario filtrare il risultato della query esterna in base ad alcune condizioni che richiedono valori di riferimento dalla query esterna stessa. Vengono comunemente utilizzati negli scenari in cui la condizione si basa sui dati delle tabelle correlate.