sql >> Database teknologi >  >> RDS >> PostgreSQL

Ret "FEJL:kolonnen "colname" eksisterer ikke" i PostgreSQL, når du bruger UNION, EXCEPT eller INTERSECT

Hvis du får "FEJL:kolonnen "colname" eksisterer ikke' ” i PostgreSQL, når du bruger en operator såsom UNION , EXCEPT , eller INTERSECT , kan det være, at du forsøger at henvise til en kolonne med alias ved dens kolonnenavn.

Når du bruger operatorer såsom UNION , INTERSECT og EXCEPT , hvis en kolonne har et alias, så skal du bruge dette alias i enhver ORDER BY klausul, der refererer til den kolonne.

For at rette fejlen skal du blot henvise til kolonnen ved dens alias.

Eller du kan fjerne aliaset helt og referere til kolonnenavnet direkte.

Eksempel på fejl

Her er et eksempel på kode, der producerer fejlen:

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

Resultat:

ERROR:  column "teachername" does not exist
LINE 4: ORDER BY TeacherName ASC;

Her brugte jeg ikke aliaset i ORDER BY klausul, som resulterede i fejlen.

Løsning 1

En måde at løse dette problem på er at bruge aliaset i ORDER BY klausul:

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

Løsning 2

En anden mulighed er at fjerne aliaset helt:

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

  1. Sløjfe over resultatsæt i MySQL

  2. Hvordan udtrækkes to på hinanden følgende cifre fra et tekstfelt i MySQL?

  3. Brug binær COPY-tabel FROM med psycopg2

  4. En oversigt over jobplanlægningsværktøjer til PostgreSQL