「エラー:テーブルのFROM句のエントリがありません」というメッセージが表示された場合 UNION
などの演算子を使用する場合のPostgreSQLの「」 、INTERSECT
、またはEXCEPT
、列名をテーブル名で修飾していることが原因である可能性があります。
これを修正するには、テーブル名を削除するか、列エイリアスを使用します。
エラーを生成するコードの例を次に示します。
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
結果:
ERROR: missing FROM-clause entry for table "teachers" LINE 4: ORDER BY Teachers.TeacherName ASC;
この場合、結果をTeacherName
で並べ替えようとしました。 列ですが、その列をテーブル名で修飾しました(Teachers.TeacherName
を使用しました 列名を参照するため)。
UNION
の結果を注文する場合、このようなテーブルの参照は機能しません 、EXCEPT
、またはINTERSECT
。
この問題を修正する1つの方法は、ORDER BY
からテーブル名を削除することです。 条項:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
これを修正する別の方法は、列のエイリアスを使用することです:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
このオプションを使用して、列にエイリアスを割り当て、ORDER BY
でそのエイリアスを参照します 条項。