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 | +--------+