Использование коррелированной инструкции DELETE

Коррелированный подзапрос используется для удаления строк в таблице на основе строк из другой таблицы.

Коррелированная инструкция DELETE

В случае инструкции DELETE можно использовать коррелированный подзапрос, чтобы удалить только те строки, которые существуют также в другой таблице. Если принято решение хранить записи только о последних 4 должностях в таблице JOB_HISTORY, то при смене пятой должности нужно удалить первую строку для сотрудника в этой таблице, используя поиск по параметру MIN(START_DATE). Следующий пример кода показывает, как предыдущая операция может быть проведена с помощью коррелированной инструкции DELETE:

    DELETE FROM emp_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));

Использование коррелированной инструкции DELETE

Используйте коррелированный подзапрос, чтобы удалить из таблицы EMPL6 только те строки, которые существуют также в таблице EMP_HISTORY.

Использование коррелированной инструкции DELETE

Пример

В этом примере используются две таблицы:

  • таблица EMPL6, содержащая сведения обо всех текущих сотрудниках;

  • таблица EMP_HISTORY, содержащая сведения о бывших сотрудниках.

В таблице EMP_HISTORY содержатся данные о бывших сотрудниках, так что наличие записей одного и того же сотрудника в обеих таблицах EMPL6 и EMP_HISTORY будет считаться ошибкой. Такие ошибочные записи можно удалить, используя коррелированный подзапрос, показанный на рисунке.

Далее: Зачем обращаться к n-му подчиненному выражению?

Статьи по теме
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)