表被指定两次,既作为“ UPDATE”的目标,又作为mysql中数据的单独来源

我有以下MySQL查询,我要检查,如果 和 的 从类型 与平等的

和 的 ,然后更新状态在 表中对 在

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'

)

);

以上是 表被指定两次,既作为“ UPDATE”的目标,又作为mysql中数据的单独来源 的全部内容, 来源链接: utcz.com/qa/397544.html

回到顶部