2013-07-27 3 views
0

Когда я пытаюсь запустить следующий сценарий, я получаю сообщение об ошибке:обновления Ошибка таблицы в разработчике SQL

update my_employees_above_avg set (employee_id, first_name, last_name, salary) = 
(select employee_id, first_name, last_name, (salary + 100) NewSalary 
from my_employees_above_avg 
where last_name like '%b%'); 

появляется следующее сообщение об ошибке: начиная

Ошибки в строке 40 в команде:

update my_employees_above_avg set (employee_id, first_name, last_name, salary) = 
(select employee_id, first_name, last_name, (salary + 100) NewSalary 
from my_employees_above_avg 
where last_name like '%b%') 
отчет

Ошибка:

SQL Error: ORA-01427: single-row subquery returns more than one row 
01427. 00000 - "single-row subquery returns more than one row" 
*Cause:  
*Action: 

Пожалуйста, предложите, что и почему оно дает мне ошибку или как я могу разрешить эту ошибку.

Спасибо,

+0

У вас есть yo try ((зарплата + 100) NewSalary)? – null

ответ

0

Предполагая, что вы пытаетесь обновить salary поле в my_employees_above_avg таблице для каждой записи, у которой last_name, как «% B%», то это должно быть то, что вы ищете:

update my_employees_above_avg 
set salary = salary + 100 
where last_name like '%b%' 
+0

Спасибо вам за помощь ... –

0

Проблема с запросом, что вы пытаетесь вверх date employee_id, first_name, last_name, salary во всех строках таблицы, а ваш дополнительный запрос возвращает несколько строк. Таким образом, оракул не может решить, какая строка была обновлена ​​в столбцах. Это очень логично.

Например, я хочу обновить отдел для всех сотрудников в таблице, а мой дополнительный запрос возвращает 3 отдела. Теперь нет способа решить, какое значение подзапроса для обновления в таблице. Следовательно, будет выброшена ошибка.

Решение будет заключаться в том, чтобы гарантировать, что подпрограмма возвращает одну строку.

Также, если цель направлена ​​только на обновление зарплаты, другие ответы объясняют правильный способ ее выполнения.

+0

получил это сейчас ... спасибо !!! –