UNION
を使用しているときに、「ERROR 1250(42000):SELECTの1つからのテーブル「…」をグローバルORDER句で使用できません」というエラーが発生した場合 MySQLクエリの句。おそらく、列名をそのテーブル名で修飾しているためです。
これはMySQLでは機能しません。
この問題を修正するには、テーブル名を削除するか、列エイリアスを使用します。
エラーを生成するコードの例を次に示します。
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
結果:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in global ORDER clause
ここでは、TeacherName
で結果を並べ替えようとしました 列ですが、その列をテーブル名で修飾しました(Teachers.TeacherName
を使用しました 列名を参照するため)。
MySQLでは、UNION
の結果を並べ替えるときに、この方法でテーブルを参照することはできません。 操作。
これを修正する1つの方法は、ORDER BY
からテーブル名を削除することです。 条項:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
結果:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+
前のオプションが適切でない場合、問題を修正する別の方法はエイリアスを使用することです。つまり、列にエイリアスを割り当ててから、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 | +--------+