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();

  • 相关阅读:
    Python入门-函数进阶
    Python入门-初始函数
    Leetcode300. Longest Increasing Subsequence最长上升子序列
    Leetcode139. Word Break单词拆分
    Leetcode279. Perfect Squares完全平方数
    Leetcode319. Bulb Switcher灯泡开关
    Leetcode322. Coin Change零钱兑换
    二叉树三种遍历两种方法(递归和迭代)
    Leetcode145. Binary Tree Postorder Traversal二叉树的后序遍历
    Leetcode515. Find Largest Value in Each Tree Row在每个树行中找最大值
  • 原文地址:https://www.cnblogs.com/gaofei-1/p/7839743.html
Copyright © 2011-2022 走看看