MySQL/MariaDB: サブクエリでの ORDER BY の動作の変更
以前 MySQL 5.5 で正常に使用されていた次のクエリを考えてみましょう。
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
MySQL の最近のバージョン (MariaDB を含む) 10.0.14) 以降、このクエリは期待どおりに結果を降順に並べ替えなくなりました。この動作の変更により、潜在的なバグに関する懸念が生じています。
しかし、調査の結果、この変更は意図的なものであり、バグとはみなされないことが確認されました。 MariaDB はこの動作を文書化しており、サブクエリは順序付けされていない行のセットを返し、サブクエリ内の ORDER BY 句は無視される可能性があることを説明しています。
望ましい順序を確保するには、ORDER BY 句を適用することをお勧めします。最も外側のクエリに追加するか、必要に応じてサブクエリに LIMIT 句を追加します。
SELECT t2.Code FROM ( SELECT Country.Code FROM Country ORDER BY Country.Code DESC LIMIT 2 ) AS t2;
この改訂されたクエリは、並べ替えと
元のバグ レポートのコメントによると、この動作の変更は MySQL 5.6 にも適用されることに注意してください。開発者はこの変更を認識し、適切な並べ替え動作を維持するためにクエリを調整する必要があります。
以上がMySQL/MariaDB サブクエリの「ORDER BY」句が機能しなくなったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。