"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o MySQL gera o erro “Tabela especificada duas vezes” ao atualizar uma tabela usando uma subconsulta?

Por que o MySQL gera o erro “Tabela especificada duas vezes” ao atualizar uma tabela usando uma subconsulta?

Publicado em 2024-11-14
Navegar:525

Why Does MySQL Throw

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.

Tutorial mais recente Mais>

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