Oracle/MySql/SQL Sqlserver分页查询

摘要:
简要总结Oracle、MySql和SQLqlserver的分页查询语句。查询语句:1从此处选择*。num˃=3说明:使用rownum列进行分页,在子查询中设置查询结束行,在父查询中设置搜索开始行。SQL Server分页查询示例:每个页面显示10条数据。现在您需要查询第三页,即21-30条数据。Criteria查询:创建Criteria对象后,有两种方法:setMaxResults和setFirstResult。

简述

    简单概括一下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();

免责声明:文章转载自《Oracle/MySql/SQL Sqlserver分页查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Tag功能介绍—我们为什么打Tag?自动化测试的利弊下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]Oracle中使用Rownum分页详细例子

原文地址:http://www.jb51.net/article/52272.htm 在MySQL中,我们通常都使用limit来完成数据集获取的分页操作,而在Oracle数据库中,并没有类似limit一样的方便方法来实现分 页,因此我们通常都是直接在SQL语句中完成分页,这里就需要借助于rownum伪列或row_number()函数了,本文将分别展示使用...

Oracle小技巧_不同表空间不同用户导入导出数据dmp

【博主注:数据库方面 ITPUB网站及博客内容非常丰富】   转载来源 ITPUB 博客经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间,为什么结果还是IMP到USERS表空间中了呢。关于此问题,作如下解释:Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原本导出时数据...

Linux中使用mysqldump对MySQL数据库进行定时备份

#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH export LANG=en_US.UTF-8 savedir=/log/database_ba...

MySQL使用json_extract 函数过滤满足条件的json串

字段中存的字符串为json串,需要取出"is_split": "0"的行, { "channel": "weibo", "entrance": "main", "order_id": "16770027", "result": { "fund_result": { "service_fee_rate": "12", "split_t...

k8s--04 部署harbor作为k8s镜像仓库

目录 k8s实战 部署harbor作为k8s镜像仓库 1.实验目标 2.在node1上安装harbor 3.编辑harbor配置文件 4.执行安装 5.浏览器访问 6.建立镜像仓库 7. 所有节点都配置docker信任harbor仓库并重启docker 注意:所有节点 8.docker登陆harbor ( 所有节点 都执行 ) 9.下载镜像修改tag...

用Oracle的TRIM函数去除字符串首尾指定字符

去掉首尾空格 SELECT TRIM('abc '), ltrim('abc '), rtrim('abc ') FROM dual; 去掉首尾的其他字符 SELECT /*TRIM(';a;b;c;'),*/ ltrim(';a;b;c;',';'), rtrim(';a;b;c;',';') FROM dual; 注意:无法使用TRIM(‘;a;...