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

Correção “ERROR 1250 (42000):Tabela ‘…’ de um dos SELECTs não pode ser usado na cláusula ORDER” no MariaDB


Se você está recebendo “ERROR 1250 (42000):A tabela '…' de um dos SELECTs não pode ser usada na cláusula ORDER”, provavelmente é porque você está qualificando um nome de coluna com seu nome de tabela ao usar um operador como UNION , INTERSECT , ou EXCEPT em MariaDB.

Para corrigir isso, remova o nome da tabela ou use um alias de coluna.

Exemplo de erro


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

Resultado:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause

Neste caso tentei ordenar os resultados pelo TeacherName coluna, mas qualifiquei essa coluna com o nome da tabela (usei Teachers.TeacherName para referenciar o nome da coluna).

A referência de tabelas como esta não funciona ao ordenar os resultados de um UNION operação no MariaDB. O mesmo é verdadeiro ao ordenar os resultados do INTERSECT operador e o EXCEPT operador.

Solução 1


Uma maneira de corrigir esse problema é remover o nome da tabela do ORDER BY cláusula:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Solução 2


Outra maneira de corrigi-lo é usar um alias para a coluna:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Com esta opção, atribuímos um alias à coluna e, em seguida, referenciamos esse alias no ORDER BY cláusula.