簡體   English   中英

更新Oracle 11g HR模式的列值

[英]Updating column values of Oracle 11g HR schema

我正在嘗試將所有員工的薪水更新為他/他工作所在部門的最高薪水。

ERD: 在此處輸入圖片說明

我的嘗試:

UPDATE EMPLOYEES SET
(SELECT SALARY
FROM EMPLOYEES
GROUP BY SALARY, DEPARTMENT_ID) = 
(SELECT "MAX"(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID);

顯然這是錯誤的。 它給出了錯誤:

ORA-01747: invalid user.table.column, table.column, or column specification

如何正確做到這一點?

您可以使用相關子查詢:

UPDATE EMPLOYEES
    SET SALARY = (SELECT MAX(SALARY)
                  FROM EMPLOYEES E2
                  WHERE E2.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID
                 );

你可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM