分页语句

Mysql 分页方案:

 select  *  from t order by id limit 10;

Oracle分页方案:

select * from (selcet  rownum r,* from t order by where r<40 )  where r>30;

mysql:sql = "select * from articles limit " + (pageNo-1)*pageSize + "," + pageSize;
oracle: sql = "select * from " +
"(select rownum r,* from " +
"(select * from articles order by postime desc)" +
"where rownum<= " + pageNo*pageSize +") tmp " +
"where r>" + (pageNo-1)*pageSize;
注释: 第 7 行保证 rownum 的顺序是确定的, 因为 oracle 的索引会造成 rownum 返回不同的
值 简
洋提示: 没有 order by 时, rownum 按顺序输出, 一旦有了 order by, rownum 不按顺序输
出了, 这说明 rownum 是排序前的编号。 如果对 order by 从句中的字段建立了索引, 那么,
rownum 也是按顺序输出的, 因为这时候生成原始的查询结果集时会参照索引表的顺序来构
建。
sqlserver:sql = "select top 10 * from id not id(select top " + (pageNo-1)*pageSize + "id from
articles)"
DataSource ds = new InitialContext().lookup(jndiurl);
Connection cn = ds.getConnection();
//"select * from user where id=?" --->binary directive
PreparedStatement pstmt = cn.prepareSatement(sql);
ResultSet rs = pstmt.executeQuery()
while(rs.next())
{ o
ut.println(rs.getString(1));
}

时间: 2025-01-03 21:44:50

分页语句的相关文章

20151016学习内容:触发器;分页语句;事务

20151016: --触发器:一种特殊的存储过程,通过对数据库表操作的 --动作,来触发,增删改 alter trigger Fruit_Insert_After --修改用alter on fruit --对哪个表操作的时候执行触发器 instead of insert -- for --(update,delete) for的意思是动作之后触发after等同 as select *from inserted --inserted临时表,就是增加的数据 go select *from stu

Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数 (转)

众所周知,Mybatis本身没有提供基于数据库方言的分页功能,而是基于JDBC的游标分页,很容易出现性能问题.网上有很多分页的解决方案,不外乎是基于Mybatis本机的插件机制,通过拦截Sql做分页.但是在像Oracle这样的数据库上,拦截器生成的Sql语句没有变量绑定,而且每次语句的都要去拦截,感觉有点浪费性能. Mybatis Generator是Mybatis的代码生成工具,可以生成大部分的查询语句. 本文提供的分页解决方案是新增Mybatis Generator插件,在用Mybatis

JDBC : 数据库的分页语句 &amp;&amp; 调用函数和存储过程

一.数据库的分页语句 在编写Web应用程序等系统时,会涉及到与数据库的交互,如果数据库中数据量很大的话,一次检索所有的记录,会占用系统很大的资源,因此常常采用分页语句:需要多少数据就只从数据库中取多少条记录.以下是Sql Server,Oracle和MySQL的分页语句(从数据库表中的第M条数据开始取N条记录): SQL Server  从数据库表中的第M条记录开始取N条记录,利用Top关键字(如果Select语句中既有top,又有order by,则是从排序好的结果集中选择): SELECT

sort order by导致分页语句性能问题优化

开发人员说后台查询某业务数据明细,非常慢,让我优化下, 然后我到公司平台点击页面上的查询发现花了6分钟,然后我把sql抓出来,发现是一个5个表关联的分页语句, 其中4个表只有几M,一个大表15G,小表就不用考虑了,然后我把大表拿出来单独分页查询发现同样花了6分钟,语句和执行计划如下: SQL> explain plan for    2  SELECT *   FROM (SELECT t.*, rownum AS rn           FROM  (SELECT *            

数据库的分页语句

一.mysql 数据库的分页语句 select *from 表名 where 主键名 limit 当前页数-1,每页显示条数; 例如select *from user_register where id limit 15,5; 二. SQL Server 2000/2005数据库的分页语句 SELECT TOP 每页大小 *FROM 表名WHERE id NOT IN ( SELECT TOP 每页大小*(当前页数-1) FROM 表名 ) 三.oracle 数据库分页 --分页查询一selec

Mysql 分页语句Limit用法

转载自:http://qimo601.iteye.com/blog/1634748 1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. Sql代码   SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须

智能将SqlServer的查询语句转换为分页语句

主要用到了jsqlparser,前面有篇博客介绍过: JAVA - Sql解析工具jsqlparser简单使用 为了给Mybatis分页插件增加对sqlserver的支持,专门写了这样一个独立的工具,只依赖jsqlparser. 这个类不仅是为了给分页插件使用的,他还能独立使用,使用它你可以方便的生成一个分页查询. 分页插件地址:Mybatis_PageHelper SqlServer分页转换完整代码:com/github/pagehelper/SqlServer.java 简单讲一下处理的逻辑

SQL点滴16—SQL分页语句总结

原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 selecttop10*from Orders a where a.orderid notin(selecttop10 orderid from Orders orderby orderid) orderby a.orderid 使用max函数 这种方法的前提是有唯一值的一个列. selecttop10*from Orders a where a.ord

存储过程分页语句

create proc [dbo].[ceb_Pagination] @strFields nvarchar(2000), --字段名 @strTableName nvarchar(2000), --表名 @strWhere nvarchar(4000), --条件 无需加where @strOrderBy nvarchar(200), --排序 必添 无需加order by @PageSize int, --分页大小 @CurrentPage int, --当前页,1为起始页 @PageCou

SQL分页语句详解

SQL分页语句 有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL 语句的分页 SQL 吧. 方法1: 适用于 SQL Server 2000/2005 SELECT TOP 页大小 *FROM table1WHERE id NOT IN           (           SELECT TOP 页大小*(页数-1) id FROM tab