SQL:UPDATE语句

时间:2016-10-26 11:54:35

标签: mysql sql

更新emp表,将具有最高佣金的员工移至40号部门,让他/她成为经理并给他/她加薪1000英镑。提示:使用子查询和> = all与SQL命令讲义上的ALL和ANY幻灯片一样。

我似乎得到了: enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的查询是:

update emp
    set . . .
    where comm = max(comm);

由于多种原因,错误是正确的。最简单的是聚合函数不属于where子句;他们也不属于更新。

如果您想更新一个行,您可以执行以下操作:

update emp
    set . . .
    order by comm desc
    limit 1;

如果您要更新所有行(并且可能有多个此类行),请使用comm

join

我应该注意,这些都不是标准的SQL。标准的SQL方法(MySQL不支持)是:

update emp e join
       (select max(comm) as maxcomm from emp) ee
       on e.comm = ee.maxcomm
    set . . .;