簡體   English   中英

使用自連接子查詢更新

[英]Update with self join subquery

題:

主管( employee_id等於114 )已從公司辭職,今天是工作的最后一天。 從即日起,他所管理的部門以及他所監督的所有員工將由其主管接管。

所以我想出的語法是:

UPDATE EMPLOYEE
   SET supervisor_id = (SELECT supervisor_id
                          FROM EMPLOYEE
                         WHERE employee_id = '114'),
 WHERE supervisor_id = '114';

輸出:錯誤1093(HY000):您無法在FROM子句中指定目標表“ EMPLOYEE”進行更新

但這是錯誤的。 我知道supervisor_id = 100但是我不只是想放SET supervisor_id = 100因為直接100不公平。 誰能幫我糾正?

UPDATE EMPLOYEE a 
  join 
     ( SELECT supervisor_id
            , employee_id  
         FROM EMPLOYEE 
        WHERE employee_id = '114'
     ) b 
    on a.supervisor_id = b.employee_id 
   set a.supervisor_id = b.supervisor_id 

使用此查詢

在MySQL中,您不能為INSERT/UPDATE/DELETE引用同一表。 但是您可以在此處使用子查詢作為解決方法。 嘗試以下類似的方法...

UPDATE EMPLOYEE 
   SET EMPLOYEE.supervisor_id = (SELECT supervisor_id
                                  FROM (SELECT * FROM EMPLOYEE) EmpFull
                                 WHERE employee_id = '114'),
 WHERE supervisor_id = '114';

在這里參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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