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.