问题:
主管(
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
似乎不公平。谁能帮我纠正?
答案 0 :(得分:0)
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
使用此查询
答案 1 :(得分:0)
在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';
参考here