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

Arreglar "ERROR 1054 (42S22):Columna desconocida 'nombre de columna' en 'cláusula de orden' en MariaDB

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.