首頁 > 軟體

MySQL中實現分頁操作的實戰指南

2022-08-26 14:01:52

一、 背景

什麼是分頁,就是查詢時候資料量太大,一次性返回所有查詢結果既耗費網路資源、又降低了查詢效率,使用者也不可能一下子看完成千上萬條資料。所以分頁的技術就應運而生。分頁可以只顯示指定數量的資料。

分頁在我們的生活中隨處可見,如下圖所示的電商網站:

二、 實現規則

2.1 關鍵字 LIMIT

在MySQL中,使用關鍵字 LIMIT 實現分頁操作。格式為:

LIMIT 位置偏移量, 每頁條目數;

當 位置偏移量 等於 0 時,該語句可簡寫為:

LIMIT 每頁條目數;

【例子1】查詢員工表 employees 中的員工的 employee_idlast_namesalarydepartment_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分頁操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com