エラー「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つの方法は、ORDER BY
でエイリアスを使用することです。 条項:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
結果:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
この場合、エイリアスが結果の列ヘッダーになります。
これを行う別の方法は、エイリアスを完全に削除することです。
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
結果:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
今回は列名が列ヘッダーになります。