我有以下MySQL查询,我要检查,如果 分支ID 和 年度 的 财务 从类型 branch_master 与平等的 分支ID 和 年 的 经理 ,然后更新状态在 管理 表中对 分公司的ID 在 经理
UPDATE manager as m1 SET m1.status = 'Y' WHERE m1.branch_id IN ( SELECT m2.branch_id FROM manager as m2 WHERE (m2.branch_id,m2.year) IN ( ( SELECT DISTINCT branch_id,year FROM `branch_master` WHERE type = 'finance' ) ) )
但出现错误
表’m1’被指定两次,既作为’UPDATE’的目标,又作为数据的单独源
这是典型的MySQL问题,通常可以通过从派生表中进行选择来规避,例如
FROM manager AS m2
采用
FROM (select * from manager) AS m2
完整的声明:
UPDATE manager SET status = 'Y' WHERE branch_id IN ( select branch_id FROM (select * from manager) AS m2 WHERE (branch_id, year) IN ( SELECT branch_id, year FROM branch_master WHERE type = 'finance' ) );