sql >> Databasteknik >  >> RDS >> PostgreSQL

Åtgärda "FEL: saknar FROM-klausulpost för tabell" i PostgreSQL när du använder UNION, EXCEPT eller INTERSECT

Om du får "ERROR:FROM-klausulen saknas för tabellen ” i PostgreSQL när du använder en operator som UNION , INTERSECT , eller EXCEPT , kan det bero på att du kvalificerar ett kolumnnamn med dess tabellnamn.

För att åtgärda detta, antingen ta bort tabellnamnet eller använda ett kolumnalias.

Exempel på fel

Här är ett exempel på kod som ger felet:

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

Resultat:

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

I det här fallet försökte jag sortera resultaten efter TeacherName kolumnen, men jag kvalificerade den kolumnen med tabellnamnet (jag använde Teachers.TeacherName för att referera till kolumnnamnet).

Referenstabeller som denna fungerar inte när du beställer resultaten av UNION , EXCEPT , eller INTERSECT .

Lösning 1

Ett sätt att åtgärda problemet är att ta bort tabellnamnet från ORDER BY klausul:

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

Lösning 2

Ett annat sätt att fixa det är att använda ett alias för kolumnen:

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

Med det här alternativet tilldelar vi kolumnen ett alias och hänvisar sedan till det aliaset i ORDER BY klausul.


  1. Hur man ansluter till flera SQL-servrar med ett klick (registrerad servergrupp) - SQL Server / TSQL självstudie del 5

  2. Konvertera kolumnen Datetime från UTC till lokal tid i select-satsen

  3. Jämför molndatabasalternativ för PostgreSQL

  4. Ansluter PowerShell till Salesforce.com