首頁 > 資料庫 > mysql教程 > 為什麼我的 MariaDB 子查詢忽略沒有「LIMIT」的「ORDER BY」?

為什麼我的 MariaDB 子查詢忽略沒有「LIMIT」的「ORDER BY」?

Barbara Streisand
發布: 2024-12-30 18:41:09
原創
176 人瀏覽過

Why Does My MariaDB Subquery Ignore `ORDER BY` Without `LIMIT`?

MySQL/MariaDB 子查詢ORDER BY 行為

在5.5 之前的MySQL 版本中,子查詢中的ORDER BY 子句按預期應用。但是,在 MariaDB 的最新版本(例如 10.0.14)中,當未指定 LIMIT 子句時,ORDER BY 子句不會套用於子查詢內部。

錯誤或行為改變?

調查此問題後,確認此行為是有意為之,而不是錯誤。 MariaDB 遵循 SQL 標準,該標準不要求子查詢中的行具有特定的順序。因此,子查詢內部會忽略 ORDER BY 子句。

已記錄的行為

根據 MariaDB 文檔,建議將 ORDER BY 子句應用於最外層查詢或新增 LIMIT 子句以強制執行排序子查詢。

範例

以下查詢示範了行為上的差異:

如果沒有LIMIT 子句,MariaDB 將不會應用ORDER子查詢內的BY 子句,導致結果無序。要強制降序,可以加入 LIMIT 子句:

透過新增 LIMIT 子句,ORDER BY 子句將應用於子查詢中,從而得到正確的降序結果。

注意

需要注意的是,此行為變更也可能影響MySQL 版本以外的版本5.5.請務必查閱官方文件或發行說明,以確認您正在使用的版本的具體行為。

以上是為什麼我的 MariaDB 子查詢忽略沒有「LIMIT」的「ORDER BY」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板