Mysql
 sql >> Base de données >  >> RDS >> Mysql

La table est spécifiée deux fois, à la fois comme cible pour 'UPDATE' et comme source distincte pour les données dans mysql

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'
  )
);