首頁 >資料庫 >mysql教程 >為什麼 MySQL/MariaDB 子查詢中的「ORDER BY」子句不再運作?

為什麼 MySQL/MariaDB 子查詢中的「ORDER BY」子句不再運作?

Patricia Arquette
Patricia Arquette原創
2025-01-03 16:22:42170瀏覽

Why Does My `ORDER BY` Clause in a MySQL/MariaDB Subquery No Longer Work?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn