介紹如何使用 MySQL/MariaDB 資料庫的 LIMIT
限制顯示的查詢結果資料筆數,應用於分頁查詢上。
建立示範用資料
首先建立一張示範用的 persons
資料表:
-- 建立 persons 資料表 CREATE TABLE persons ( id INT NOT NULL AUTO_INCREMENT, -- 序號,整數、非空、自動遞增 name VARCHAR(255), -- 名字,可變長度的文字 PRIMARY KEY (id) -- 主鍵 ); -- 插入多筆資料至 persons 資料表 INSERT INTO persons (name) VALUES ("Bond"), ("Cole"), ("Dana"), ("Elmer"), ("Gray"), ("Forrest"), ("Rand"), ("Shaw"), ("Hayes"); -- 查看 persons 資料表內所有資料 SELECT * FROM persons;
+----+---------+ | id | name | +----+---------+ | 1 | Bond | | 2 | Cole | | 3 | Dana | | 4 | Elmer | | 5 | Gray | | 6 | Forrest | | 7 | Rand | | 8 | Shaw | | 9 | Hayes | +----+---------+
限制查詢結果筆數
當 SELECT
查詢結果的資料筆數很多的時候,可以運用 LIMIT
限制顯示的資料筆數上限,例如最多顯示 3 筆資料:
-- 最多顯示 3 筆資料 SELECT * FROM persons LIMIT 3;
+----+------+ | id | name | +----+------+ | 1 | Bond | | 2 | Cole | | 3 | Dana | +----+------+
跳過前幾筆資料
單純使用 LIMIT
指定顯示的資料筆數,只會從顯示最開頭的查詢結果,如果希望跳過指定的資料筆數,可以在 LIMIT
之後加上另外一個 offset 參數,指定從第幾筆資料開始顯示,例如跳過 2 筆資料,然後顯示 3 筆資料:
-- 跳過 2 筆、顯示 3 筆資料 SELECT * FROM persons LIMIT 2, 3;
+----+-------+ | id | name | +----+-------+ | 3 | Dana | | 4 | Elmer | | 5 | Gray | +----+-------+
這樣就可以應用於分頁查詢的狀況了。
顯示指定的資料
LIMIT
也可以用於顯示指定的單筆資料,例如顯示第 6 筆資料:
-- 顯示第 6 筆資料 SELECT * FROM persons LIMIT 5, 1;
+----+---------+ | id | name | +----+---------+ | 6 | Forrest | +----+---------+
排序
LIMIT
在選取資料時,可以配合 ORDER BY
先將資料排序後,再進行資料的選取,例如依 name
排序後,取第 5 筆至第 7 筆資料:
-- 依 name 排序後,取第 5 ~ 7 筆資料 SELECT * FROM persons ORDER BY name LIMIT 4, 3;
+----+---------+ | id | name | +----+---------+ | 6 | Forrest | | 5 | Gray | | 9 | Hayes | +----+---------+
參考資料:MySQL Tutorial