sql >> Base de Datos >  >> RDS >> PostgreSQL

Reparar 'ERROR: la columna "nombre de columna" no existe' en PostgreSQL cuando se usa UNION, EXCEPT o INTERSECT

Si recibe "ERROR:la columna "nombre de columna" no existe" ” en PostgreSQL cuando se usa un operador como UNION , EXCEPT , o INTERSECT , puede ser que esté tratando de hacer referencia a una columna con alias por su nombre de columna.

Al usar operadores como UNION , INTERSECT y EXCEPT , si una columna tiene un alias, deberá 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.

O podría 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:  column "teachername" does not exist
LINE 4: ORDER BY TeacherName ASC;

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;

Solución 2

Otra opción es eliminar el alias por completo:

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