2016-12-02 25 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 = {你什麼都想要}其中SAL <50000' –

+0

'更新EMP集SAL = newamount其中SAL < 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;