2016-12-02 5 views
0

У меня есть таблица под названием emp(eid, ename, sal, mgr). Теперь я хочу обновить зарплату менеджера, чья зарплата меньше 50000/-.Как выбрать обновление в той же таблице в mysql?

UPDATE emp AS t1 INNER JOIN 
(SELECT mgr FROM emp WHERE mgr = t1.empno) AS t2 
SET sal = sal + 5000 
WHERE t1.sal <50000; 

Что мне делать?

+2

вставить запрос –

+0

'Обновление EMP множество SAL = {то, что вы хотите}, где сал <50000' –

+0

' Обновление EMP множество сал = newamount где сал < 50000' –

ответ

0

вы можете использовать подзапрос, чтобы обновить данные, которые зависят от одной таблицы, а именно:

UPDATE sometable set field = null 
WHERE sometable.id in (SELECT * FROM (SELECT id from sometable) as a); 
1

Я хочу, чтобы обновить менеджер зарплату, чья зарплата меньше 50000/

почему вам нужен SELECT BTW. Просто выполнить UPDATE операцию как

update emp 
set sal = 70000 
where sal < 50000; 
0

В MySQL, я предпочитаю с помощью JOIN для этого типа обновления, чтобы с помощью дважды вложенное выражение IN. JOIN позволяет оптимизатору использовать имеющиеся индексы:

UPDATE emp mgr INNER JOIN 
     emp e 
     ON e.empno = mgr.mgr 
    SET mgr.sal = mgr.sal + 5000 
    WHERE mgr.sal < 50000; 
Смежные вопросы