ホームページ >データベース >mysql チュートリアル >MariaDB サブクエリの ORDER BY 句が無視されるように見えるのはなぜですか?
MySQL 5.5 より前のバージョンでは、サブクエリは内部の ORDER BY 句を尊重していました。ただし、この動作は MariaDB 10.0.14 を含む最近のバージョンで変更されました。
MariaDB 10.0.14 で次のクエリを実行するとき:
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
結果は、予想される降順とは対照的に、昇順 (または自然な順序) でソートされるようになりました。 order.
MariaDB のドキュメントを調べた結果、観察された動作はバグとは見なされません。 SQL 標準によれば、テーブルとサブクエリは順序付けされていない行のセットです。したがって、オプティマイザはサブクエリ内の ORDER BY 句を無視することを選択する場合があります。
結果の順序付けの一貫性を確保するには、ORDER BY 句を外部クエリに適用することをお勧めします。 :
SELECT t2.Code from (select Country.Code from Country) AS t2 ORDER BY t2.Code DESC;
あるいは、サブクエリ内で LIMIT 句を使用すると、ORDER BY を強制的に実行することもできます。適用対象:
SELECT t2.Code from (select Country.Code from Country ORDER BY Country.Code DESC LIMIT 2) AS t2;
現在、特定のテストは利用できませんが、バグ レポートのコメントは、MySQL 5.6 も MariaDB 10.0.14 と同じ動作を示す可能性があることを示唆しています。サブクエリ内の ORDER BY 句は無視されます。
以上がMariaDB サブクエリの ORDER BY 句が無視されるように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。