MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Correção de “ERRO 1054 (42S22):Coluna desconhecida ‘colname’ na ‘cláusula de pedido’ no MariaDB


Se você estiver recebendo o erro "ERRO 1054 (42S22):Coluna desconhecida 'colname' na 'cláusula do pedido' ” no MariaDB, pode ser que você esteja tentando referenciar uma coluna com alias pelo nome da coluna.

Este é um erro comum ao executar consultas que unem duas ou mais tabelas. Isso também pode acontecer ao usar operadores como UNION , INTERSECT e EXCEPT .

Geralmente, se uma coluna tem um alias, você deve usar esse alias em qualquer ORDER BY cláusula que faz referência a essa coluna.

Para corrigir o erro, basta referenciar a coluna pelo seu alias.

Como alternativa, você pode remover completamente o alias e fazer referência ao nome da coluna diretamente.

Exemplo de erro


Aqui está um exemplo de código que produz o erro:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Resultado:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Aqui eu não usei o alias no ORDER BY cláusula que resultou no erro.

Solução 1


Uma maneira de corrigir esse problema é usar o alias no ORDER BY cláusula:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Resultado:
+-------+
| t     |
+-------+
| Ben   |
| Cathy |
+-------+

Nesse caso, o alias se torna o cabeçalho da coluna no resultado.

Solução 2


Outra maneira de fazer isso é remover o alias completamente:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Resultado:
+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

Desta vez, o nome da coluna se torna o cabeçalho da coluna.