Коррелированный подзапрос используется для обновления строк в таблице на основе строк из другой таблицы.
В случае инструкции UPDATE коррелированный подзапрос можно использовать для обновления строк в таблице на основе строк из другой таблицы.
Использование коррелированной инструкции UPDATE
-
Измените структуру таблицы
EMPL6
, добавив столбец для хранения названия отдела. -
Заполните таблицу значениями, используя коррелированное обновление.
В примере на рисунке измените структуру таблицы EMPL6
, добавив столбец для хранения названия отдела, а затем заполните таблицу значениями, используя коррелированное обновление.
Ниже приводится еще один пример для коррелированного обновления.
Изложение задачи
Таблица REWARDS
содержит список сотрудников, перевыполнивших плановое задание.
Используйте коррелированный подзапрос для обновления строк в таблице EMPL6
на основе строк из таблицы REWARDS
:
UPDATE empl6 SET salary = (SELECT empl6.salary + rewards.pay_raise FROM rewards WHERE employee_id = empl6.employee_id AND payraise_date = (SELECT MAX(payraise_date) FROM rewards WHERE employee_id = empl6.employee_id)) WHERE empl6.employee_id
|
В этом примере используется таблица REWARDS
. В таблице REWARDS
имеются следующие столбцы: EMPLOYEE_ID
, PAY_RAISE
и PAYRAISE_DATE
. Каждый раз, когда сотруднику повышают оклад, в таблицу REWARDS
вставляется запись со сведениями, такими как идентификатор сотрудника, величина увеличения оклада и дата повышения. Таблица REWARDS
может содержать более одной записи для каждого сотрудника. Столбец PAYRAISE_DATE
используется для определения последних повышений окладов сотрудников.
В приведенном примере столбец SALARY
в таблице EMPL6
обновляется для отражения последних повышений окладов сотрудников. Это делается путем добавления текущего оклада сотрудника с соответствующим повышением оклада из таблицы REWARDS
.
Далее: Использование подчиненных выражений с поддержкой регулярных выражений