[英]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.