mysql 查询从2到 10,sql查询(三)之分页查询

分页查询这个内容基本上是个项目都会用的到的东西,面试也会问到的,

平常项目中老是百度用法,这些写博客来总结一下,省的老是百度。

现在主流的关系型数据的分页实现还是有点差别的,以oracle、mysql、server为例。

oracle分页

数据采用是oracle安装时勾选的事例表,有emp,dept、SALGRADE等数据表。

emp数据表的内容

a3ad2e81716b9fcd75816695a953ff82.png

oracle实现分页的方式是行号ROWNUM+FROM子查询,要实现分页需要知道两个参数:

currentPage   表示当前页

linesize  表示显示的数据量

示例一

查询第一页数据,每页显示三条数据

currentPage=1  linesize =3:从数据表中取出1~3条数据

SELECT * FROM (SELECTROWNUM rn,EMPNO,ENAME,JOB,SAL,HIREDATE,MGR,COMM,DEPTNOFROM EMP WHERE ROWNUM<=3) temp

WHERE temp.rn>=1;

结果:

c2d8f7ee72bdf8eb2804cbc4085400f8.png

示例二

查询第二页数据,每页显示三条数据

currentPage=7  linesize =9:从数据表中取出7~9条数据

SELECT * FROM (SELECTROWNUM rn,EMPNO,ENAME,JOB,SAL,HIREDATE,MGR,COMM,DEPTNOFROM EMP WHERE ROWNUM<=6) temp

WHERE temp.rn>=4;

结果:

a8bb327e963aae8ae34ad9267f9aafd1.png

示例三

查询第三页数据,每页显示三条数据

currentPage=1  linesize =3:从数据表中取出1~3条数据

SELECT * FROM (SELECTROWNUM rn,EMPNO,ENAME,JOB,SAL,HIREDATE,MGR,COMM,DEPTNOFROM EMP WHERE ROWNUM<=9) temp

WHERE temp.rn>=7;

结果:

7 7698 BLAKE MANAGER 2850 1981-05-01 00:00:00 7839 30

8 7782 CLARK MANAGER 2450 1981-06-09 00:00:00 7839 10

9 7788 SCOTT ANALYST 3000 1987-04-19 00:00:00 7566 20

总结

通过以上的三个demo我们可以总结出:知道当前页为currentPage,显示的数据量linesize,

就可以计算出要从数据库第m条到第n条的数据:

m=(currentPage-1)*linesize+1

n=currentPage*linesize

mysql分页

mysql分页查询最简单,它使用的是limit关键字。关键字之后需要两个参数m,n,最终mysql语句的样式:

db8fe3edf7d08c7d1f5a8b370f5e2149.png

--m的含义表示从数据的第m条开始查询(mysql中第一条数据m=0)

--n的含义是从第m条数据开始往后查询n条数据

查询第1页,每页显示10条数据

e4ae0b0fed1248ca0a39069c39d0795a.png

查询第2页,每页显示10条数据

4e1ce91f628beb7ec4e07498c5d2f67d.png

查询第三页,每页显示10条数据

048f4efe9727bc19e9dd56249b9300e0.png

总结

通过以上的查询总结出公式:

--m=(currentPage-1)*linesize

--n=linesize

sqlserver分页查询

sqlserver分页查询实现的关键字是top,项目中也没有用到过,看到网上有一篇博客记录SQLserver各个版本的分页实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值