Sql 正在尝试使用子查询的结果更新所有列

Sql 正在尝试使用子查询的结果更新所有列,sql,oracle11g,sql-update,Sql,Oracle11g,Sql Update,我对SQL非常陌生,我正在尝试做以下工作: update the salary of employees with their department avg salary. 我正在尝试SQL命令 我正在尝试的命令是: update emp set sal = select avg(sal) from emp; 但我得到了这样一个错误: ORA-00936: missing expression : update emp set sal = select avg(sal) from emp

我对SQL非常陌生,我正在尝试做以下工作:

update the salary of employees with their department avg salary.
我正在尝试SQL命令

我正在尝试的命令是:

update emp set sal = select avg(sal) from emp;
但我得到了这样一个错误:

ORA-00936: missing expression : update emp set sal = select avg(sal) from emp
我在哪里犯了错误


提前感谢。

您所尝试的仅是正确的…通常,子查询应保留在括号内,请尝试以下操作:更新emp set sal=从emp中选择avgsal

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

参考此:

它有效吗?首先,如果值来自select,则不能直接更新表。其次,当语句返回值时,需要使用子查询包装语句。