Utilizeaza o subinterogare corelata pentru a sterge randurile dintr-un tabel pe baza randurilor
din alt tabel ( sterge numai randurile dintr-un tabel care exista in alt tabel).
Exemplu:
Se presupune ca se doreste ca pentru un angajat sa se
pastreze in tabelul Job_History numai inregistrarile
referitoare la ultimele patru job-uri avute. Cu alte cuvinte, daca
un angajat se transfera la un la cincilea job va trebui stearsa inregistrarea referitoare
la cel mai vechi job avut. Acest lucru se poate realiza prin
cautarea in tabelul Job_history inregistrarea
cu valoarea minima pentru
campul start_date corespunzatoare angajatului.
In acest scop se poate folosi
operatia de stergere
corelata:
DELETE FROM job_history jh
WHERE employee_id =
( SELECT employee_id
FROM employees e
WHERE jh.employee_id=e.employee_id
AND start_date =
(SELECT MIN(start_date)
FROM job_history jh
WHERE jh.employee_id=e.employee_id)
AND 5> (SELECT count(*)
FROM job_history jh
WHERE jh.employee_id=e.employee_id
GROUP BY employee_id
HAVING COUNT(*) >= 4));