Si recibe el error "ERROR 1054 (42S22):Columna desconocida 'nombre de columna' en 'cláusula de orden' ” en MariaDB, puede ser que esté intentando hacer referencia a una columna con alias por su nombre de columna.
Este es un error común cuando se ejecutan consultas que unen dos o más tablas. También puede ocurrir cuando se usan operadores como UNION
, INTERSECT
y EXCEPT
.
Generalmente, si una columna tiene un alias, debe usar ese alias en cualquier ORDER BY
cláusula que hace referencia a esa columna.
Para corregir el error, simplemente haga referencia a la columna por su alias.
Alternativamente, puede eliminar el alias por completo y hacer referencia al nombre de la columna directamente.
Ejemplo de error
Aquí hay un ejemplo de código que produce el error:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultado:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Aquí no usé el alias en ORDER BY
cláusula que resultó en el error.
Solución 1
Una forma de solucionar este problema es usar el alias en ORDER BY
cláusula:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Resultado:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
En este caso, el alias se convierte en el encabezado de la columna en el resultado.
Solución 2
Otra forma de hacerlo es eliminar el alias por completo:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultado:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Esta vez, el nombre de la columna se convierte en el encabezado de la columna.