sql >> データベース >  >> RDS >> PostgreSQL

UNION、EXCEPT、またはINTERSECTを使用している場合、PostgreSQLの「エラー:列「colname」が存在しません」を修正しました

    エラー:列「colname」が存在しません」が表示された場合 UNIONなどの演算子を使用する場合のPostgreSQLの「」 、EXCEPT 、またはINTERSECT 、列名でエイリアス列を参照しようとしている可能性があります。

    UNIONなどの演算子を使用する場合 、INTERSECT 、およびEXCEPT 、列にエイリアスがある場合は、そのエイリアスをORDER BYで使用する必要があります その列を参照する句。

    エラーを修正するには、エイリアスで列を参照するだけです。

    または、エイリアスを完全に削除して、列名を直接参照することもできます。

    エラーの例

    エラーを生成するコードの例を次に示します。

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

    結果:

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

    ここでは、ORDER BYでエイリアスを使用しませんでした エラーが発生した句。

    ソリューション1

    この問題を修正する1つの方法は、ORDER BYでエイリアスを使用することです。 条項:

    (SELECT TeacherName t FROM Teachers)
    EXCEPT
    (SELECT StudentName FROM Students)
    ORDER BY t ASC;
    ソリューション2

    もう1つのオプションは、エイリアスを完全に削除することです。

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

    1. SQLiteINTERSECTオペレーター

    2. OPENROWSETエラーを使用してAccess2007データをクエリするSQLServer2012

    3. wwv_flow_filesを使用したOracleApexへのファイルのインポート

    4. カーソルからデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください