2013-03-03 30 views
0

結果更新所有列,我很新的SQL和我試圖做到以下幾點:試圖用的子查詢

update the salary of employees with their department avg salary. 

我試圖SQL命令here

我嘗試的命令是:

update emp set sal = select avg(sal) from emp; 

,但我發現這樣的錯誤:

ORA-00936: missing expression : update emp set sal = select avg(sal) from emp 

在那裏我做了錯誤?

在此先感謝。

回答

1
update emp 
set sal = (SELECT av FROM (SELECT AVG(sal) av FROM emp) s) 
from emp; 
+0

但爲什麼我的失敗? – sriram 2013-03-03 05:58:24

+0

是否奏效?首先,如果值來自select,則無法直接更新表。其次,你需要用子查詢包裝語句,因爲它返回一個值。 – 2013-03-03 06:00:06

1

你已經嘗試不僅是正確的......一般來說子查詢應該保留括號內只是試試這個:update emp set sal = (select avg(sal) from emp);

裁判這樣的:http://sqlfiddle.com/#!4/edea8/4