ホームページ >データベース >mysql チュートリアル >MariaDB サブクエリの ORDER BY 句が無視されるように見えるのはなぜですか?

MariaDB サブクエリの ORDER BY 句が無視されるように見えるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-03 18:02:39584ブラウズ

Why Does My MariaDB Subquery's ORDER BY Clause Seem to Be Ignored?

MySQL/MariaDB: Order By Subquery の不一致

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 の動作

現在、特定のテストは利用できませんが、バグ レポートのコメントは、MySQL 5.6 も MariaDB 10.0.14 と同じ動作を示す可能性があることを示唆しています。サブクエリ内の ORDER BY 句は無視されます。

以上がMariaDB サブクエリの ORDER BY 句が無視されるように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。