请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储相关的知识,希望对你有一定的参考价值。

请问,如何用一条SQL查询出分页的数据和总记录数啊?mysql的!不用存储过程,就是直接的sql

的确要查询两次的,因为计算总记录数是使用的聚合函数count(),如果你想一起查询出来,就要使用分组,那样也麻烦,对数据库的操作要使用细粒度的操作,可以使用事务来控制两次查询,用同一个connection,这样可以避免两次查询导致两次不同进程之间的连接操作 参考技术A 可以这样用一条sql解决
SELECT 0,'','',COUNT(*) num FROM USER WHERE id >5
UNION
SELECT id,user_name,user_password,0 FROM USER WHERE id >5 LIMIT 2,5;

11.分页技术

 

分页的实现过程

1.前台传入 想要访问的页码,如我想访问第5页了

2.后台接收到这个页码,再查询出总记录数(总记录数用于得到共有多少页)

3.根据页码 和 总记录数,创建出一个Page对象 (这个Page对象是分页的核心)

4.可以根据这个Page对象里面的方法,得到我要查询的第5页数据的 startindex 起始位置,和一页显示多少记录

5.有了这两个参数,就可以使用 limit 语句,得到第5页的具体数据,将其封装到Page对象中,返回给前台显示 

6.首次访问 ,页码为 null ,即访问第一页数据

这个Page类的主要代码:

 1     private List list;        
 2     private int totalpage;  //记住总页数
 3     
 4     private int totalrecord;
 5     private int pagesize = 5;
 6     
 7     private int pagenum;   //代表用户想看的页
 8     private int startindex;//代表用户想看的页的数据从数据库哪个地方开始取
 9     
10     public page(int totalrecord,int pagenum) {
11         
12         this.totalrecord = totalrecord;
13         if(this.totalrecord % this.pagesize == 0) {
14             this.totalpage = this.totalrecord/this.pagesize;
15         }
16         else {
17             this.totalpage = this.totalrecord/this.pagesize + 1;
18         }
19         
20         this.pagenum = pagenum;
21         this.startindex = (this.pagenum-1)*this.pagesize;
22         
23     }
   //业务方法
1
public page getPageDate(String pagenum) { 2 3 int totalrecord = dao.getTotalRecord(); 4 5 if(pagenum == null) { 6 //代表用户想看第一页的数据 7 page pa = new page(totalrecord,1); 8 // 9 List list = dao.getPageDate(pa.getStartindex(), pa.getPagesize()); 10 pa.setList(list); 11 return pa; 12 } 13 else { 14 page pa = new page(totalrecord,Integer.parseInt(pagenum)); 15 List list = dao.getPageDate(pa.getStartindex(), pa.getPagesize()); 16 pa.setList(list); 17 return pa; 18 } 19 }

 

以上是关于请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储的主要内容,如果未能解决你的问题,请参考以下文章

一条sql语句实现分页查询,且能返回记录总数

请问如何用jquery 实现html页面的分页查询

11.分页技术

请问:如何用sql语句来查询有多少学生选修课呢?

oracle db 如何用一条sql查询2个时间之间的工作时间间隔

如何用 Hibernate 实现分页查询