SQL中limit与分页的结合

sql 复制代码
select * from test limit 2,10;

这条语句的含义:从第3条语句开始查询,共显示10条语句。

sql 复制代码
select * from test limit a,b;

a=0,第一条记录。

a=1,第二条记录。

a=2,第三条记录。

这条语句的含义:从第a+1条语句开始查询,共显示b条语句。

如果共有Record_num条数据,希望分页显示,

每页rnpp条数据,共page_num页,最后一页记录数为lprn。

Record_num=page_num*rnpp+lprn;

已知Record_num,rnpp。

cpp 复制代码
lprn=Record_num%rnpp;
if(lprn==0){page_num=Record_num/rnpp;}
else {page_num=Record_num/rnpp+1;}

现在我想要获取第now_page页的相应数据,如何使用SQL表示?

思考:

相应数据从第几条记录开始,共有多少条?

设相应数据从第c条记录开始,共有b条。

第一页的第一条数据:c=1

第二页的第一条数据:c=1+rnpp;

第三页的第一条数据:c=1+rnpp*2;

第now_page页的第一条数据:c=1+rnpp*(now_page-1);

第now_page页共有多少数据呢?

分情况讨论:

(1)lprn=0,即每一页都有rnpp条数据。

(2)lprn!=0,前page_num-1页都有rnpp条数据,最后一页数据为lprn。

cpp 复制代码
if(lprn==0)b=rnpp;
else{
    if(now_page==page_num)b=lprn;
    else b=rnpp;
}

最后的相关SQL语句:

cpp 复制代码
a=c-1;
select * from test limit a,b;
相关推荐
这个DBA有点耶34 分钟前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风35 分钟前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio1 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲5 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋6 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子6 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T7 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡8 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata8 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__8 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构