zoukankan      html  css  js  c++  java
  • Oracle/MySql/SQL Sqlserver分页查询

    简述

        简单概括一下Oracle,MySql,SQL Sqlserver这三个数据库的分页查询语句。


    Oracle分页查询

        例:每页显示两条数据,现在要查询第二页,也就是第3-4条数据。

        查询语句:

    1 select * from (
    2        select dept.*,rownum num from dept where rownum <= 4
    3 ) d where d.num >= 3

        解释:使用rownum列进行分页,子查询中设置查询结束行,父查询中设置查询起始行。

        注意:子查询中的rownum列要起一个别名。

    MySQL分页查询

        例:每页显示10条数据,现在要查询第三页,也就是第21-30条数据。

        查询语句:

    1 SELECT * FROM `tab_sys_menu` LIMIT 20, 10

        解释:使用limit进行分页查询,limit之后的第一个参数是设置查询起始行,第二个参数是设置查询行数(也就是每页显示数量)。

        注意:起始行从0开始。

    SQL Server分页查询

        例:每页显示10条数据,现在要查询第三页,也就是第21-30条数据。

        查询语句:

    1 select top 10 * from Room where RoomId not in (
    2     select top 20 RoomId from Room
    3 )

        解释:使用子查询进行分页,子查询里面的top值设置为要排除的行,比如要从第21条数据开始查询,那么前20条数据肯定是不要的,再比如要从第41条数据开始查询,那么前40条数据肯定是不要的。

              父查询的top值设置为查询行数(也就是每页显示数量)


    扩展

        其实分页查询语句也不一定非得自己写,如果项目dao层用hibernate实现的话,有两种方式可以非常方便的实现分页查询。

        它们分别是Criteria查询和HQL查询。

        Criteria查询:创建Criteria对象之后,有两个方法,分别是:setMaxResults(设置每页显示记录数)和setFirstResult(设置从第几行开始查询)。

        HQL查询:其实和上面的一样,根据Session创建Query之后,query对象也有setMaxResults(设置每页显示记录数)和setFirstResult(设置从第几行开始查询)方法。

        例:session.createQuery(hql).setFirstResult((result.getPageNo()-1)*result.getPageSize()).setMaxResults(size).list();

  • 相关阅读:
    java代码中存在的Big Endian 和 Little Endian
    通过hbase实现日志的转存(MR AnalyserLogDataRunner和AnalyserLogDataMapper)
    hbase使用MapReduce操作1(基本增删改查)
    配置好Nginx后,通过flume收集日志到hdfs(记得生成本地log时,不要生成一个文件,)
    数据库分页查询
    将博客搬至CSDN
    Dev Winform本地化
    C#,OleDbType,Access 对应数据类型
    C#字符串转义和反转义
    C# 正则表达式
  • 原文地址:https://www.cnblogs.com/gaofei-1/p/7839743.html
Copyright © 2011-2022 走看看