首頁 > 資料庫 > mysql教程 > 如何從 MySQL 表中可靠地按升序選擇最後 N 行?

如何從 MySQL 表中可靠地按升序選擇最後 N 行?

Barbara Streisand
發布: 2024-12-04 02:29:12
原創
584 人瀏覽過

How to Reliably Select the Last N Rows in Ascending Order from a MySQL Table?

從MySQL 中選擇最後N 行

使用各種方法從MySQL 資料庫中選擇最後N 行可以是一項簡單的任務。然而,當處理按升序排序的主鍵列時,傳統方法可能會遇到限制。本文旨在為這個問題提供一個可靠的解決方案,允許操作和消除表中的記錄。

問題:

最初的目標是檢索表中的最後 50 行根據主鍵列 ID 按升序排序。然而,最初的嘗試突出了兩個弱點:

  1. 使用 ORDER BY id DESC 對行進行降序排序在使用 LIMIT 50 時無法保留所需的 ASC 順序。
  2. 依賴的查詢從最大 ID 中減去固定值(例如 id > (SELECT MAX(id) FROM chat) - 50)變成操作行時不可靠。

解決方案:

為了克服這些挑戰,更強大的方法採用了子查詢:

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;
登入後複製

說明:

  • 子查詢((SELECT * FROM table ORDER BY id DESC LIMIT 50)) 檢索表中的最後 50 行,同時保留降序。
  • 外部查詢 (SELECT * FROM ...) 包裝了子查詢並引入了新的 ORDER BY 子句,該子句會覆蓋先前的排序並根據 id 按升序對行重新排序。

這種方法有效解決了限制用傳統方法遇到的。它允許:

  • 按 ASC 順序檢索最後 N 行,無論是否進行操作或刪除。
  • 處理對錶的更改,例如新增或刪除行,不影響查詢的準確性。

以上是如何從 MySQL 表中可靠地按升序選擇最後 N 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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