"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 "Erro: as instruções SELECT usadas têm um número diferente de colunas" em operações UNION?

Como resolver "Erro: as instruções SELECT usadas têm um número diferente de colunas" em operações UNION?

Publicado em 2024-11-10
Navegar:981

How to Resolve \

Erro: discrepâncias na contagem de colunas em instruções SELECT

Ao executar uma consulta envolvendo várias instruções SELECT, como uma operação UNION, é imperativo para garantir que cada instrução contenha exatamente o mesmo número de colunas. Não fazer isso resultará no erro "Erro: as instruções SELECT usadas têm um número diferente de colunas".

Para resolver esse problema, a consulta precisa ser reescrita de forma que cada cláusula SELECT tenha um número idêntico de colunas com tipos de dados compatíveis. Por exemplo, 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 

sofre deste erro porque o primeiro SELECT contém 4 colunas ("", u1., u2.*), enquanto o segundo SELECT retorna apenas uma única coluna ("fid2 ").

Uma reescrita mais direta que preserva a funcionalidade pretendida é:

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 

Ao garantir que ambas as instruções SELECT retornem o mesmo número de colunas com tipos de dados correspondentes, a consulta pode ser executada sem encontrar o erro de contagem de colunas. Além disso, elimina junções externas desnecessárias, que parecem redundantes com base no esquema fornecido.

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