MySQL分页思路

-- MySQL 查询数据

/*
mysql的 SELECT 语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

select * : 返回所有记录
 limit N : 返回 N 条记录
 offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用
 limit N,M : 相当于 offset N limit M , 从第 N 条记录开始, 返回 M 条记录
 
查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
SELECT 命令可以读取一条或者多条记录。
你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
你可以使用 WHERE 语句来包含任何条件。
你可以使用 LIMIT 属性来设定返回的记录数。
你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0

*/

-- 查询所有数据(*表示所有列)
SELECT * FROM runoob_tb;

-- 返回前5条记录
SELECT	* FROM runoob_tb LIMIT 5;
-- 从第1条记录开始,返回5条记录
SELECT * FROM runoob_tb LIMIT 0,5;
-- 以上这两句话,效果相同

/*
一共8条记录,要求分页,每页显示3条
即8/3=2余2
8%3=2

总记录数totalRecord=8
每页记录数pageSize=3

求总页数totalPageNum:

  总页数=(8%3)+1=3    即每页3条,可以分3页显示
int totalPageNum = (totalRecord % pageSize) + 1;

  总页数=(8+3-1)/3=3  在java中 /相当于取整 ,%是取余
int totalPageNum = (totalRecord + pageSize  - 1) / pageSize;

三目运算符,(判断总记录数是否能整除,不能整除则取整后加1)
totalPageNum=(totalRecord%pagesize==0)?totalRecord/pagesize:totalRecord/pagesize+1;


--------------
三目运算符:
  变量 = 表达式1 ? 表达式2 : 表达式3;
  
计算方法:  
  若 表达式1 为真,变量等于 表达式2
  若 表达式1 为假,变量等于 表达式3


------------------计算页码对应的记录-------------------
第一页页码begin=1                     1~3
第二页页码                            4~6
第三页页码(最末页)end=3               7~8 (不足3条也要占1页)


上一页页码last                        3n-6~3n-3
             
当前页页码pageNow=2(假设为第二页)     2*3=6,本页最后的记录为第6条记录
当前页页码pageNow=n                   n*3=3n,本页最后的记录为第3n条记录
                                      即当前的记录为3n-3 ~ 3n 

下一页页码next                        3n+1~最后


----
总结:
要求分页显示,每页显示3条记录
上一页的页码last       对应的记录为  3*pageNow-6 ~ 3*pageNow-3  (即LIMIT 0,3)

设当前页页码为pageNow,对应的记录为  3*pageNow-3 ~ 3*pageNow    (即LIMIT 3,3)

下一页的页码next       对应的记录为  3*pageNow   ~ 3*pageNow+3  (即LIMIT 6,3)




简记:
第一条: select * from 表名 limit 1;
最后一条:select * from 表名 order by 表_id desc limit 1


*/

-- 查询总记录数
SELECT COUNT(*) FROM runoob_tb

-- 第一页begin,对应第一条记录 
SELECT * FROM runoob_tb LIMIT 1

-- 最末页end,对应最后一条记录
SELECT * FROM runoob_tb ORDER BY runoob_id DESC LIMIT 1

-- =========MySQL分页法1=================================
-- 从第1条记录开始,返回3条记录(即1~3)
SELECT * FROM runoob_tb LIMIT 0,3;
-- 从第4条记录开始,返回3条记录(即4~6)
SELECT * FROM runoob_tb LIMIT 3,3;
-- 从第7条记录开始,返回3条记录(剩余的不够3条,就返回剩余记录)
SELECT * FROM runoob_tb LIMIT 6,3;


-- ========MySQL分页法2==================================
-- 跳过0条记录,返回3条记录(即1~3)
SELECT * FROM runoob_tb LIMIT 3 OFFSET 0;
-- 跳过3条记录,返回3条记录(即4~6)
SELECT * FROM runoob_tb LIMIT 3 OFFSET 3;
-- 跳过6条记录,返回3条记录(剩余的不够3条,就返回剩余记录)
SELECT * FROM runoob_tb LIMIT 3 OFFSET 6;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThinkPet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值