Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A tabela é especificada duas vezes, tanto como destino para 'UPDATE' quanto como fonte separada para dados no mysql


Isso é uma coisa típica do MySQL e geralmente pode ser contornado selecionando na tabela derivada, ou seja, em vez de
FROM manager AS m2

usar
FROM (select * from manager) AS m2

A declaração completa:
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'
  )
);