案例中的两个表格
error code 1093 报错
如果是子查询操作的表和更新操作是同一张表就会出现这个问题
案例:把“客服部”的“张一鸣”的工资金额修改为4000 元(用2个表关联)
错误演示:
update staff set salary=4000
where
staffname in
(select e.staffname from staff e join (select * from depart where departname='客服部') a
on e.departid=a.departid
where e.staffname = '张一鸣') ;
执行上面的sql语句后数据库报错提示:
Error Code: 1093. You can't specify target table 'staff' for update in FROM clause 0.000 sec ```
解决方式:给子查询再套一层
update staff set salary=4000
where
staffname in
(select s.staffname from
(select e.staffname from staff e join (select * from depart where departname='客服部') a
on e.departid=a.departid where e.staffname = '张一鸣')
s
);
欧克