UNION
を使用しているときに、エラー「1054(42S22):「orderclause」の不明な列「…」」が発生した場合 MySQLの句の場合、エイリアス列をその列名で参照しようとしていることが原因である可能性があります。
UNION
を使用する場合 MySQLの句。列にエイリアスがある場合は、そのエイリアスをORDER BY
で使用する必要があります。 その列を参照する句。
したがって、エラーを修正するには、必ずそのエイリアスで列を参照してください。または、エイリアスを削除して列名を直接参照することもできます。
エラーを生成するコードの例を次に示します。
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
結果:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
ここでは、TeacherName
で結果を並べ替えようとしました 列ですが、その列にはエイリアスがあります。 ORDER BY
でエイリアスを使用しなかったという事実 エラーを生成するには句で十分でした。
この問題を修正する1つの方法は、ORDER BY
でエイリアスを使用することです。 条項:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
結果:
+--------+ | t | +--------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +--------+
それで問題は解決しました。
これを行う別の方法は、エイリアスを完全に削除することです。
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
結果:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+