MySQL(8.0) row_number() 函數的使用
手動分頁查詢的時候接觸到了 row_number() 函數。
1、介紹
row_number() 函數多用於對數據進行排序,返回的數據項多增加一個序號。
如:按照年齡對用戶進行排序,並返回序號:
select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u
2、分頁查詢
上文可知 row_number() 可以排序並返回序號,想實現分頁查詢可在外面嵌套一個 select,根據序號對數據進行限制。
如;返回五名年齡最小的用戶:
select * from
(select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u) uu
where uu.rownumber <= 5
手動分頁查詢一般需要傳入兩個參數,page 代表第幾頁, pageSize 代表一頁數量,
當 page = 2, pageSize = 3 時,sql大致如下:
select uu.* from
(select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u) uu
where uu.rownumber >(2-1)*3 and uu.rownumber <=2*3