Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Correção de “ERRO 1054 (42S22):Coluna desconhecida ‘…’ na ‘cláusula de pedido’ ao usar UNION no MySQL


Se você estiver recebendo o erro "1054 (42S22):Coluna desconhecida '…' na 'cláusula de pedido'" ao usar o UNION cláusula no MySQL, pode ser porque você está tentando fazer referência a uma coluna com alias pelo nome da coluna.

Ao usar o UNION cláusula no MySQL, se uma coluna tiver um alias, você deve usar esse alias em qualquer ORDER BY cláusula que faz referência a essa coluna.

Portanto, para corrigir o erro, certifique-se de referenciar a coluna por seu alias. Como alternativa, você pode remover 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)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

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

Aqui tentei ordenar os resultados pelo TeacherName coluna, mas essa coluna tem um alias. O fato de não ter usado o alias no ORDER BY cláusula foi suficiente para produzir o erro.

Solução 1


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

Resultado:
+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+

Isso resolveu o problema.

Solução 2


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

Resultado:
+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+