zoukankan      html  css  js  c++  java
  • 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条数据

        

      方案二:

  • 相关阅读:
    day23_雷神_git
    day23_雷神_crm-day2
    day21_雷神_django第四天
    day20_雷神_django第三天
    day19_雷神_django第二天
    day18_雷神_django第一天
    day17_雷神_数据库 小全
    day16_雷神_前端04
    awksedgrep 补充
    python 操作MongoDB非关系型数据库
  • 原文地址:https://www.cnblogs.com/-beyond/p/8663589.html
Copyright © 2011-2022 走看看