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;
相关推荐
Zhu_S W9 小时前
Redis跳表:高效有序数据结构的深度剖析
数据结构·数据库·redis
جيون داد ناالام ميづ9 小时前
Spring AOP核心原理分析
java·数据库·spring
无敌最俊朗@9 小时前
SQLite 核心知识点讲解
jvm·数据库·oracle
小宋10219 小时前
Neo4j-图数据库入门图文保姆攻略
数据库·neo4j
lang2015092810 小时前
Spring数据库连接控制全解析
java·数据库·spring
十八岁讨厌编程10 小时前
【后端SQL训练营】高频 SQL 50 题(基础版·上篇)
数据库·sql
迷失的walker10 小时前
【Qt C++ QSerialPort】QSerialPort fQSerialPortInfo::availablePorts() 执行报错问题解决方案
数据库·c++·qt
程序新视界10 小时前
什么是OLTP ,MySQL是如何支持OLTP的?
数据库·后端·mysql
pen-ai11 小时前
【数据工程】14. Stream Data Processing
数据库·oracle
倔强的石头10611 小时前
【金仓数据库】ksql 指南(三) —— 创建与管理表空间和模式
数据库·金仓数据库