MySQL、Oracle分页查询

  1. mysql分页
  2. 需用到的参数:
  3. pageSize 每页显示多少条数据
  4. pageNumber 页数 从客户端传来
  5. totalRecouds 表中的总记录数 select count (*) from 表名
  6. totalPages 总页数
  7. totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
  8. pages 起始位置
  9. pages= pageSize*(pageNumber-1)
  10. SQL语句:
  11. select * from 表名 limit pages, pageSize;
  12. mysql 分页依赖于关键字 limit 它需两个参数:起始位置和pageSize
  13. 起始位置=页大小*(页数-1)
  14. 起始位置=pageSize*(pageNumber -1)
  15. 一:分页需求:

    客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:

    比如:

    查询第1条到第10条的数据的sql是:select * from table limit 0,10;   ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;

    查询第10条到第20条的数据的sql是:select * from table limit 10,20;  ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;

    查询第20条到第30条的数据的sql是:select * from table limit 20,30;  ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;

    二:通过上面的分析,可以得出符合我们自己需求的分页sql格式是:select * from table limit (start-1)*limit,limit; 其中start是页码,limit是每页显示的条数。

    1. oracle分页
    2. pageSize 每页显示多少条数据
    3. pageNumber 页数 从客户端传来
    4. totalRecouds 表中的总记录数 select count (*) from 表名
    5. totalPages 总页数
    6. totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
    7. startPage 起始位置
    8. startPage= pageSize*(pageNumber-1)+1
    9. endPage=startPage+pageSize
    10. SQL语句
    11. select a.* from
    12. (
    13. select rownum num ,t.* from  表名 t where 某列=某值 order by id asc
    14. )a
    15. where a.num>=startPage and a.num<endPage  
      1. select t2.* from (select t1.*,rownum rn from (select  employee_id,emp_name,email,phone_number,hire_date,j.job_title,salary,d.department_name from employeess eleft join jobss j on e.job_id=j.job_idleft join departmentss d on e.department_id=d.department_id) t1 where rownum &lt;= #{up}) t2 where rn &gt; #{down}
      2. Mapper:List<Employees> findByPageNo(@Param("up") int up, @Param("down") int down);
      3. Dao:
        public List<Employees> findByPageNo(int pageNo, int pageNum) {    int up=pageNo*pageNum;    int down=(pageNo-1)*pageNum;    return employeeMapper.findByPageNo(up,down);}
      4. Service:
        public List<Employees> findByPageNo(int pageNo, int pageNum) {    return   employeeDao.findByPageNo(pageNo,pageNum);}
      5. Controller
        @RequestMapping("employeelist.do")public String list(int pageNo, Model model) {    //每页数量    int pageNum = 3;    //总数量    int count = employeeService.findMaxSize();    //总页数    int pageMax = count % pageNum == 0 ? count / pageNum : count / pageNum + 1;
        
        System.out.println("list---------");    //页数判断    if (pageNo < 1) {        pageNo = 1;    }    if (pageNo > pageMax) {        pageNo = pageMax;    }
        
        List<Employees> all = employeeService.findByPageNo(pageNo, pageNum);    //将结果返回给页面显示    model.addAttribute("employeelist", all);    model.addAttribute("pageNo", pageNo);    model.addAttribute("pageMax", pageMax);
        
        return "employeelist";}

原文地址:https://www.cnblogs.com/arvins/p/8474564.html

时间: 2024-08-28 01:28:08

MySQL、Oracle分页查询的相关文章

MySQL数据库分页查询,Oracle数据库分页查询,SqlServer数据库分页

DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `pass` varchar(255) NOT NULL, `sex` varchar(255) NOT NULL, `age` int(11) NOT NULL, `address` varchar(255) DEFAULT NULL, PRIMA

oracle 的分页查询与mysql 的分页查询

oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : mySQL 的分页查询: select o.*  from Persons o limit 40,20 ;              limit (偏移条数,数据条数) SQLServer :top  select top 4 * from order by hiredate      自注: 显示第一个到第

Oracle分页查询语句的写法(转)

分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHER

ORACLE 分页查询

Oracle之分页查询 Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围.

oracle 分页查询数据重复问题

最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照顺序从数据中读取符合条件的数据返回到客户端,给用户误解为默认排序. 然而,当我加上排序的时候,还是查询有重复的数据,(指第一页数据在第二页也查询出来了),这是我就疑问了,当我检查数据的时候,发现我排序的字段有空的情况,而且有很多条,导致排序返回的 伪列并不是唯一的. 总结: oracle 分页查询数

oracle分页查询结果集重复问题&解决方法

做项目时,无意间发现了分页上的一个bug,在此记录一下: 首先手动将后台输出的sql语句复制进oracle中查看,以便排查错误,对比以下视图前10条的结果集与10到20条的结果集,发现大部分记录出现重复现象,SQL语句如下: --前10条记录 select *   from (select row_.*, rownum rownum_           from (select t.idcard, count(1)                   from sampling.v_unvou

MySQL oracle 分页

(1)MySql的Limit m,n语句 Limit后的两个参数中,参数m是起始下标,它从0开始:参数n是返回的记录数.我们需要分页的话指定这两个值即可. 比如:查询10行记录,起始行从3开始 SELECT * FROM emp LIMIT 3, 10; (2)Oracle数据库的rownum 子查询要包含在括号内. 将子查询放在比较条件的右侧. 单行操作符对应单行子查询,多行操作符对应多行子查询. 子查询可以出现在select,from,where,having子句中 子查询不可以出现在gro

MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)

http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下: 比如: 查询第1条到第10条的数据的s

ORACLE分页查询SQL语法——最高效的分页

--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM emp t WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd') AND TO_DATE ('20060731', 'yyyymmdd') AND ROWNUM <= 20) table_