sql >> Databáze >  >> RDS >> PostgreSQL

Oprava „ERROR: chybějící záznam klauzule FROM pro tabulku“ v PostgreSQL při použití UNION, EXCEPT nebo INTERSECT

Pokud se vám zobrazuje „CHYBA:chybí záznam klauzule FROM pro tabulku ” v PostgreSQL při použití operátoru, jako je UNION , INTERSECT nebo EXCEPT , může to být proto, že kvalifikujete název sloupce s názvem jeho tabulky.

Chcete-li tento problém vyřešit, odstraňte název tabulky nebo použijte alias sloupce.

Příklad chyby

Zde je příklad kódu, který způsobuje chybu:

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

Výsledek:

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

V tomto případě jsem se pokusil seřadit výsledky podle TeacherName sloupec, ale kvalifikoval jsem tento sloupec názvem tabulky (použil jsem Teachers.TeacherName odkaz na název sloupce).

Referenční tabulky, jako je tato, nefungují při řazení výsledků UNION , EXCEPT , nebo INTERSECT .

Řešení 1

Jedním ze způsobů, jak tento problém vyřešit, je odstranit název tabulky z ORDER BY klauzule:

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

Řešení 2

Dalším způsobem, jak to opravit, je použít alias pro sloupec:

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

Pomocí této možnosti přiřadíme alias ke sloupci a poté na tento alias odkazujeme v ORDER BY doložka.


  1. Připojte SQL Server k SugarCRM

  2. Jak vytvořit tabulku v návrhovém zobrazení v Accessu 2016

  3. Oracle dynamic DESC a ASC v pořadí podle

  4. Výpočet klouzavého průměru MySQL?