Mysql
 sql >> Database >  >> RDS >> Mysql

La tabella è specificata due volte, sia come destinazione per "UPDATE" sia come origine separata per i dati in mysql

Questa è una cosa tipica di MySQL e di solito può essere aggirata selezionando dalla tabella derivata, cioè invece di

FROM manager AS m2

usa

FROM (select * from manager) AS m2

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