"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 > Como resolver o erro “Contagens de colunas diferentes em instruções selecionadas” ao usar UNION?

Como resolver o erro “Contagens de colunas diferentes em instruções selecionadas” ao usar UNION?

Publicado em 2024-11-07
Navegar:467

How to Resolve the \

Erro: contagens de colunas diferentes em instruções Select

Ao executar uma consulta que utiliza o operador UNION, é imperativo garantir que todas as instruções SELECT individuais envolvidas cumpram dois critérios fundamentais:

  1. Contagem de colunas correspondentes: Cada instrução SELECT deve produzir o mesmo número de colunas no conjunto de resultados recuperado.
  2. Dados consistentes Tipos: Os tipos de dados das colunas correspondentes em diferentes instruções SELECT devem estar alinhados.

Análise do problema

Considerando a consulta fornecida:

SELECT * FROM friends
LEFT JOIN users AS u1 ON users.uid = friends.fid1
LEFT JOIN users AS u2 ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 

a mensagem de erro indica uma discrepância na contagem de colunas entre as duas instruções SELECT unidas por UNION. Especificamente, a primeira instrução SELECT retorna todas as colunas das tabelas envolvidas, enquanto a segunda busca apenas a coluna fid2.

Solução

Para resolver esse problema, a segunda instrução SELECT deve ser modificada para corresponder à contagem de colunas da primeira instrução. A abordagem mais fácil é incluir explicitamente todas as colunas desejadas:

   SELECT f.*, u.*
     FROM FRIENDS AS f
     JOIN USERS AS u ON u.uid = f.fid2
    WHERE f.fid1 = 1 
      AND f.fid2 > 1
UNION 
   SELECT f.*, u.*
     FROM FRIENDS AS f
     JOIN USERS AS u ON u.uid = f.fid1
    WHERE f.fid2  = 1 
      AND f.fid1 

Alternativamente, pode-se usar o operador UNION ALL, que permite instruções SELECT com contagens de colunas variadas. No entanto, as colunas incompatíveis serão preenchidas com valores NULL, o que pode não ser desejável em todos os casos.

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