首頁 >資料庫 >mysql教程 >儘管進行了資料操作,如何從 MySQL 中按升序檢索最後 N 行?

儘管進行了資料操作,如何從 MySQL 中按升序檢索最後 N 行?

Susan Sarandon
Susan Sarandon原創
2024-12-27 09:15:10547瀏覽

How to Retrieve the Last N Rows in Ascending Order from MySQL Despite Data Manipulation?

按升序檢索 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中文網其他相關文章!

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