C'est une chose typique de MySQL et peut généralement être contournée en sélectionnant dans la table dérivée, c'est-à-dire au lieu de
FROM manager AS m2
utiliser
FROM (select * from manager) AS m2
La déclaration complète :
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'
)
);