更新emp表,将具有最高佣金的员工移至40号部门,让他/她成为经理并给他/她加薪1000英镑。提示:使用子查询和> = all与SQL命令讲义上的ALL和ANY幻灯片一样。
有什么想法吗?
答案 0 :(得分:1)
您的查询是:
update emp
set . . .
where comm = max(comm);
由于多种原因,错误是正确的。最简单的是聚合函数不属于where
子句;他们也不属于更新。
如果您想更新一个行,您可以执行以下操作:
update emp
set . . .
order by comm desc
limit 1;
如果您要更新所有1}}最多的行(并且可能有多个此类行),请使用comm
:
join
我应该注意,这些都不是标准的SQL。标准的SQL方法(MySQL不支持)是:
update emp e join
(select max(comm) as maxcomm from emp) ee
on e.comm = ee.maxcomm
set . . .;