[英]Updating column values of Oracle 11g HR schema
I'm trying to update the salaries of all employees to the maximum salary of the department in which s/he works. 我正在尝试将所有员工的薪水更新为他/他工作所在部门的最高薪水。
My try: 我的尝试:
UPDATE EMPLOYEES SET
(SELECT SALARY
FROM EMPLOYEES
GROUP BY SALARY, DEPARTMENT_ID) =
(SELECT "MAX"(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID);
Obviously this is wrong. 显然这是错误的。 It gives the error:
它给出了错误:
ORA-01747: invalid user.table.column, table.column, or column specification
How to do this correctly? 如何正确做到这一点?
You can use a correlated subquery: 您可以使用相关子查询:
UPDATE EMPLOYEES
SET SALARY = (SELECT MAX(SALARY)
FROM EMPLOYEES E2
WHERE E2.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID
);
you can use merge
你可以使用
merge
MERGE INTO EMPLOYEES a
USING ( SELECT DEPARTMENT_ID, MAX(SALARY) as sal
FROM EMPLOYEES group by DEPARTMENT_ID
) b
ON ( a.DEPARTMENT_ID = b.DEPARTMENT_ID )
WHEN MATCHED THEN
UPDATE SET a.SALARY = b.sal
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.