sql >> Database >  >> RDS >> PostgreSQL

Fix "ERROR:ontbrekende FROM-clausule voor tabel" in PostgreSQL bij gebruik van UNION, BEHALVE of INTERSECT

Als u "ERROR:ontbrekende FROM-clausule voor tabel" krijgt ” in PostgreSQL bij gebruik van een operator zoals UNION , INTERSECT , of EXCEPT , het kan zijn dat u een kolomnaam kwalificeert met de tabelnaam.

Om dit op te lossen, verwijdert u de tabelnaam of gebruikt u een kolomalias.

Voorbeeld van fout

Hier is een voorbeeld van code die de fout veroorzaakt:

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

Resultaat:

ERROR:  missing FROM-clause entry for table "teachers"
LINE 4: ORDER BY Teachers.TeacherName ASC;

In dit geval heb ik geprobeerd de resultaten te ordenen op TeacherName kolom, maar ik heb die kolom gekwalificeerd met de tabelnaam (ik gebruikte Teachers.TeacherName om naar de kolomnaam te verwijzen).

Verwijzen naar tabellen zoals deze werkt niet bij het bestellen van de resultaten van UNION , EXCEPT , of INTERSECT .

Oplossing 1

Een manier om dit probleem op te lossen is door de tabelnaam te verwijderen uit de ORDER BY clausule:

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

Oplossing 2

Een andere manier om dit op te lossen is door een alias voor de kolom te gebruiken:

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

Met deze optie wijzen we een alias toe aan de kolom en verwijzen we vervolgens naar die alias in de ORDER BY clausule.


  1. Wat is de huidige weergave APPL_TOP snapshots

  2. Slaapstand en database met meerdere tenants met behulp van schema's in PostgreSQL

  3. Een databaseback-up herstellen in OpenCart 1.5

  4. MySQL/MariaDB Vault Database Secrets Engine inrichten met Terraform