MySQL中實現分頁操作的實戰指南
一、 背景
什麼是分頁,就是查詢時候數據量太大,一次性返回所有查詢結果既耗費網絡資源、又降低瞭查詢效率,用戶也不可能一下子看完成千上萬條數據。所以分頁的技術就應運而生。分頁可以隻顯示指定數量的數據。
分頁在我們的生活中隨處可見,如下圖所示的電商網站:
二、 實現規則
2.1 關鍵字 LIMIT
在MySQL中,使用關鍵字 LIMIT 實現分頁操作。格式為:
LIMIT 位置偏移量, 每頁條目數;
當 位置偏移量 等於 0 時,該語句可簡寫為:
LIMIT 每頁條目數;
【例子1】查詢員工表 employees
中的員工的 employee_id
、last_name
、salary
和 department_id
信息。並按每頁 20 條來顯示。
# 寫法一 SELECT employee_id, last_name, salary FROM employees LIMIT 0, 20; # 寫法二 SELECT employee_id, last_name, salary FROM employees LIMIT 20;
其中,LIMIT
後第一個參數是初始偏移量,即從第幾條數據開始顯示;第二個參數是每頁要顯示多少條數據。
查詢結果:
顯示瞭員工編號 100~119 的員工。
【例子2】繼續上面的例子1,上面的代碼隻是顯示瞭第一頁的數據,如果現在用戶想要顯示第2頁的數據,應該怎麼操作呢?可以使用 LIMIT
後第一個參數是初始偏移量來讓數據庫從第21條數據 (因為第1條數據的編號為 0 ,所以第20條數據的編號就是20) 開始顯示。如下代碼所示:
SELECT employee_id, last_name, salary FROM employees LIMIT 20, 20;
查詢結果:
顯示瞭員工編號 120~139 的員工。
【總結】總結一個分頁的公式,設每頁顯示的數據個數為 pageSize,當前是第 pageNo 頁,那麼就有如下 LIMIT
查詢公式:
LIMIT (pageNo - 1) * pageSize, pageSize;
2.2 查詢數據庫表的第 x x x 條記錄
【例子1】查詢員工表 employees
中的第 32、33條員工的數據。
SELECT employee_id, last_name, salary FROM employees LIMIT 31, 2;
查詢結果:
2.3 WHERE…ORDER BY…LIMIT… 的聲明順序 (非執行順序)
正確的聲明順序如下代碼所示:
SELECT employee_id, last_name, salary FROM employees WHERE salary >= 5000 ORDER BY salary DESC LIMIT 0, 10;
查詢結果:
三、 拓展
MySQL8.0中對於分頁新增瞭一個新特性,對 LIMIT
後增加瞭偏移量 OFFSET
:
LIMIT 每頁條目數 OFFSET 初始偏移量;
對比一下原有的格式,無非就是把 初始偏移量 和 每頁條目數 位置調轉一下,然後把逗號去掉即可。
LIMIT
可以使用在 MySQL、PostgreSQL、MariaDB 和 SQLite 中。LIMIT
不可以使用在 Oracle、DB2、SQL Server 中!
總結
到此這篇關於MySQL中實現分頁操作的文章就介紹到這瞭,更多相關MySQL分頁操作內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL如何對數據進行排序圖文詳解
- SQL實現LeetCode(185.系裡前三高薪水)
- MySQL子查詢的使用詳解下篇
- MySQL子查詢的使用詳解上篇
- MySQL必備基礎之分組函數 聚合函數 分組查詢詳解