按升序檢索 MySQL 中的最後 N 行並處理資料
從 MySQL 資料庫中選擇最後 N 行是一種常見操作。然而,在操作資料時,指定返回行的順序可能會很棘手。
考慮以下場景:您想要從名為「table」的表中選擇最後 50 行,基於「id」列,它是主鍵。以“id”升序對行進行排序是一項基本要求。
嘗試失敗
以下查詢嘗試按降序對結果進行排序,但失敗返回最後50 行:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
或者,此查詢嘗試辨識最後一個將「id」值與最大「id」值減50 進行比較,可以得到50行,但如果已刪除行,則不起作用:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
解決方案
要解決這個問題,可以使用子查詢來達到想要的結果:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
先這個查詢執行子查詢,該子查詢從「table」中選擇最後50行並按降序對它們進行排序。然後,產生的子查詢別名為「sub」。
最後,外部查詢從「sub」子查詢中選取所有行,並按升序對它們進行排序。這有效地從表中檢索最後 50 行,確保它們根據「id」列按升序排序,並處理行可能已被操縱的情況。
以上是儘管進行了資料操作,如何從 MySQL 中按升序檢索最後 N 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!