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

MariaDBの「ERROR1250(42000):SELECTの1つからのテーブル「…」をORDER句で使用できない」を修正

    「エラー1250(42000):SELECTの1つからのテーブル'…'はORDER句で使用できません」というメッセージが表示される場合は、<などの演算子を使用しているときに列名をテーブル名で修飾していることが原因である可能性があります。 code> UNION 、 INTERSECT 、または EXCEPT MariaDBで。

    これを修正するには、テーブル名を削除するか、列エイリアスを使用します。

    エラーの例

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

    (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 ORDER clause

    この場合、結果を TeacherNameで並べ替えようとしました。 列ですが、その列をテーブル名で修飾しました( Teachers.TeacherNameを使用しました 列名を参照するため)。

    UNION の結果を注文する場合、このようなテーブルの参照は機能しません MariaDBでの操作。 INTERSECTの結果を注文する場合も同様です。 演算子とEXCEPT オペレーター。

    ソリューション1

    この問題を修正する1つの方法は、 ORDER BYからテーブル名を削除することです。 条項:

    (SELECT TeacherName FROM Teachers)
    UNION
    (SELECT StudentName FROM Students)
    ORDER BY TeacherName ASC;
    ソリューション2

    これを修正する別の方法は、列のエイリアスを使用することです:

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

    このオプションを使用して、列にエイリアスを割り当て、 ORDER BYでそのエイリアスを参照します 条項。


    1. SQLServerテーブルの列に非ヌル制約を作成する方法-SQLServer/T-SQLチュートリアルパート51

    2. PERIOD_DIFF()の例– MySQL

    3. MySQL-length()とchar_length()

    4. データベースの削除中にエラーが発生しました(rmdir'.test \'ができません、errno:17)