MySQL分页时统计总记录行数并使用limit返回固定数目的记录

Posted 寻觅beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL分页时统计总记录行数并使用limit返回固定数目的记录相关的知识,希望对你有一定的参考价值。

  需求很简单:假设有一个user表,表中实际上有10000条数据,但是我不知道有多少条,我要从数据库中每次取20条数据显示,那么怎么完成呢?

  方案一:

    首先执行一个

select count(*) as total  from user;  

    上面SQL语句会查出总的记录条数。另外一点,可能这里不只是无条件的查,如果是有条件的查,那么可以使用临时表

select count(*) from user where id>10;
或者
select count(*) from (select id,name from user) as temp;

     总的记录条数求出了之后,于是可以使用limit只取一部分数据了:

select * from user limit start,offset;

    其实上面的做法完全没有问题,但是我有一个疑问,这里的例子只是从一个表进行操作,而且还是很简单的操作,如果要进行很复杂的连接、分组、去重,如果进行计算的几个表的数据量很大的时候,那么就意味着上面的操作很冗余:

    一次是执行完整的操作,然后只取得总的记录条数;

    一次是执行完整的操作,然后只取得从start之后的offset条数据。

    其实这两次操作的第一步是重合的,那么我就在想能不能只进行一次操作(比如几个表之间的连接、分组、去重等操作),然后又可以获得总的记录条数,又能只取start之后offset条数据

    

  方案二:

以上是关于MySQL分页时统计总记录行数并使用limit返回固定数目的记录的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序云开发— “返回指定行数limit()及分页skip()”

php+Mysql分页 类和引用详解

mysql分页问题

限制结果集行数

MyBatis怎样实现MySQL动态分页

MyBatis怎样实现MySQL动态分页