原始表如下:
SELECT id,username,sex, age
FROM A_lj_005
;
id | username | sex | age |
---|---|---|---|
286 | 李雷 | 0 | 24 |
287 | 韩梅梅 | 3 | 27 |
290 | Lili | 1 | 42 |
291 | Lucy | 0 | 44 |
292 | 陈吉 | 1 | 49 |
293 | 张志 | 1 | 55 |
存储过程如下:
CREATE DEFINER = 'root'@'%'
PROCEDURE test.p_lj_test1(
IN `p_page_size` int, IN `p_current_page` int
)
COMMENT '测试分页'
BEGIN
#设置分页
DECLARE start_num,total_page int;
SET start_num = (p_current_page - 1) * p_page_size;
SELECT SQL_CALC_FOUND_ROWS
id,username,sex, age
FROM A_lj_005
ORDER BY id
LIMIT start_num, p_page_size
;
#总页数
SELECT CEIL(FOUND_ROWS() / p_page_size) INTO total_page;
END
调用存储过程:
CALL p_lj_test1(2,1);
id | username | sex | age |
---|---|---|---|
286 | 李雷 | 0 | 24 |
287 | 韩梅梅 | 3 | 27 |
CALL p_lj_test1(2,2);
id | username | sex | age |
---|---|---|---|
290 | Lili | 1 | 42 |
291 | Lucy | 0 | 44 |
使用SQL_CALC_FOUND_ROWS:
SELECT FOUND_ROWS ( ) ;返回一个数字,指示了在没有LIMIT子句的情况下,第一个SELECT返回了多少行
若第一个 SELECT语句不包括 SQL_CALC_FOUND_ROWS 选项,则使用LIMIT 和不使用时,FOUND_ROWS() 可能会返回不同的结果。