sql >> Base de Datos >  >> RDS >> MariaDB

Arreglar "ERROR 1250 (42000):la tabla '...' de uno de los SELECT no se puede usar en la cláusula ORDER" en MariaDB

Si obtiene "ERROR 1250 (42000):la tabla '...' de uno de los SELECT no se puede usar en la cláusula ORDER", probablemente se deba a que está calificando un nombre de columna con su nombre de tabla cuando usa un operador como UNION , INTERSECT , o EXCEPT en MariaDB.

Para solucionar esto, elimine el nombre de la tabla o use un alias de columna.

Ejemplo de error

Aquí hay un ejemplo de código que produce el error:

(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

En este caso traté de ordenar los resultados por TeacherName columna, pero califiqué esa columna con el nombre de la tabla (utilicé Teachers.TeacherName para hacer referencia al nombre de la columna).

Hacer referencia a tablas como esta no funciona al ordenar los resultados de un UNION operación en MariaDB. Lo mismo ocurre cuando se ordenan los resultados de INTERSECT operador y el EXCEPT operador.

Solución 1

Una forma de solucionar este problema es eliminar el nombre de la tabla de ORDER BY cláusula:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Solución 2

Otra forma de solucionarlo es usar un alias para la columna:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Con esta opción, asignamos un alias a la columna y luego hacemos referencia a ese alias en el ORDER BY cláusula.