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

「エラー1054(42S22):MariaDBの「orderclause」の不明な列「colname」」を修正しました

    エラー「ERROR1054(42S22):Unknown column‘colname’ in‘orderclause’ 」MariaDBで、エイリアスされた列をその列名で参照しようとしている可能性があります。

    これは、2つ以上のテーブルを結合するクエリを実行するときによくあるエラーです。 UNIONなどの演算子を使用している場合にも発生する可能性があります 、INTERSECT 、およびEXCEPT

    通常、列にエイリアスがある場合は、そのエイリアスをORDER BYで使用する必要があります その列を参照する句。

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

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

    エラーの例

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

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

    結果:

    ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

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

    ソリューション1

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

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

    結果:

    +-------+
    | t     |
    +-------+
    | Ben   |
    | Cathy |
    +-------+

    この場合、エイリアスが結果の列ヘッダーになります。

    ソリューション2

    これを行う別の方法は、エイリアスを完全に削除することです。

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

    結果:

    +-------------+
    | TeacherName |
    +-------------+
    | Ben         |
    | Cathy       |
    +-------------+

    今回は列名が列ヘッダーになります。


    1. SQL Serverで(decimal、float、int)に変換できないフィールド値を判別する方法

    2. エラー:Postgresを使用したシーケンスcitys_id_seqの権限が拒否されました

    3. PostgreSQLユーザーに空白のパスワードを設定する

    4. SQLliteデータベースをGoogleドライブアプリフォルダにバックアップ/復元します