现在我有一个疑问:在scott/tiger用户下,修改表EMP,将每个部门工资最高的员工薪水提高500块钱
我的SQL语句是:SQL> update emp2
2 set sal=sal+200
3 where empno in
4 (select empno
5 from ( select *
6 from (select emp.*,row_number() over(partition by deptno order by sal desc) as rank
7 from emp )a )t
8 where rank=1);
但是命令提示符只给了如下提示:1 row updated。当我再查询一遍的时候发现,并没有修改任何一条信息,真是郁闷。恳请高手指点。谢谢……
我的SQL语句是:SQL> update emp2
2 set sal=sal+200
3 where empno in
4 (select empno
5 from ( select *
6 from (select emp.*,row_number() over(partition by deptno order by sal desc) as rank
7 from emp )a )t
8 where rank=1);
但是命令提示符只给了如下提示:1 row updated。当我再查询一遍的时候发现,并没有修改任何一条信息,真是郁闷。恳请高手指点。谢谢……
set sal=sal+200
from emp2 t
where sal = (select max(sal) from emp2 where deptno = t.deptno)commit;
那么楼上的大侠的代码就不通用了!
SQL> update emp2
2 set sal=sal+200
3 where empno in
4 (select empno
5 from ( select *
6 from (select emp.*,row_number() over(partition by deptno order by sal desc) as rank
7 from emp )a )t
8 where rank between 1 and 3);--前三名首先说一下:oracle没有top关键字。
emp2,emp两个表?
如果工资最高的出现并列怎么办,用row_number不太好吧
给工资高的提薪,工资低的不管..这个制度问题更严重。嘿嘿
上帝啊……