Erro MySQL: tabela especificada duas vezes em UPDATE e fonte
Ao tentar atualizar a tabela do gerenciador usando a consulta SQL fornecida, o MySQL encontra um erro: "A tabela 'm1' é especificada duas vezes, tanto como destino para 'UPDATE' quanto como fonte separada de dados." Este erro ocorre porque o gerenciador de tabela é referenciado duas vezes na subconsulta.
O problema pode ser resolvido modificando a subconsulta para selecionar em uma tabela derivada. Em vez de usar o alias m2 diretamente, a consulta deve criar uma tabela temporária usando a instrução SELECT e, em seguida, selecionar nessa tabela temporária. A consulta modificada abaixo consegue isso:
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' ) );
Ao usar uma tabela derivada, o MySQL pode diferenciar adequadamente entre a tabela do gerenciador usada na instrução UPDATE e a tabela do gerenciador referenciada na subconsulta. Isso elimina a confusão que levou à mensagem de erro.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3