核心概念
LIMIT
?(限制):?指定查詢最多返回多少行記錄。OFFSET
?(偏移):?指定在開始返回記錄之前要跳過多少行記錄。它定義了結果集的起始點。
核心前提:?必須?使用?
ORDER BY
?子句來確保分頁結果的順序穩定和可預測。
示例:?假設?employees
?表有 100 條記錄,我們想每頁顯示 10 條 (page_size = 10
)。
第 1 頁:
sql
SELECT * FROM employees ORDER BY employee_id -- 必須排序才能保證分頁順序穩定! LIMIT 10 OFFSET 0; -- 或簡寫為 LIMIT 0, 10 (MySQL風格)
結果:返回第 1 到第 10 條記錄。
第 2 頁:
sql
SELECT * FROM employees ORDER BY employee_id LIMIT 10 OFFSET 10; -- 跳過前10條,取接下來的10條
結果:返回第 11 到第 20 條記錄。
數據庫方言差異:
MySQL, PostgreSQL, SQLite:?支持?
LIMIT number OFFSET number
?語法。MySQL 也支持?LIMIT offset, count
?的簡寫形式(注意順序:OFFSET
?在前,LIMIT
?在后)。SQL Server:?使用?
OFFSET ... ROWS FETCH NEXT ... ROWS ONLY
?語法