项目一直都用的hibernate,很少对分页查询写sql语句,这次做项目用的mybatis,mybatis的内部分页不是很好,用的是jdbc的游标移动,它是基于内存分页的,所以要自己写sql语句,就总结一下几种主流数据库的分页写法
1. mysql
mysql的分页比较简单,mysql数据库提供了分页处理的关键字 例如表的名称叫 procuct
select * from product limit 0,10
limit 后面是两个整数,第一个整数是开始的行号,第二个是要取得数据的记录数,比如上面的sql语句会查询出第一条到第十条记录,它是从开始行号的下一条开始取数据的。
2. sql server
sql server 的分页语句稍微复杂点,假如表中有字段 id 用top实现
select top pageSize * from product where id not in (select top (pageNow - 1) * pageSize id from product order by id) order by id
pagesize 就是要取得的记录条数,不过这样的效率不是很高,随着页数的增加速度会慢
sql server 2005 提供了row_number 和over by 函数也可以实现分页
select * from (select row_number() over by(id)
rownum t.* from (select * from product) t where rownum <= pageNow * pageSize)where rownum > (pagenow - 1)* pageSize)
效率还是挺高的 比上面用top效率高,不过只用sql 2005 版本以上的数据库管理系统支持。
2.oracle
oracle是用三层嵌套来实现的 ,一直很纳闷,为什么oracel公司不做的简单的,像 mysql 那样多好,不知道为什么要搞这么复杂,oracel为查询的记录提供了一个虚拟列,叫rownum,就是行号
select * from (select rownum,
t.* from (select * from product) t where rownum <= pageNow * pageSize)where rownum > (pagenow - 1)* pageSize)
挺复杂的,希望oracel也提供像mysql 那样的分页sql语句
分享到:
相关推荐
本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...
MySQL、SQL Server、Oracle 分页及 Java 分页统一接口实现 MySQL、SQL Server、Oracle 分页是关系数据库管理系统中最基本也是最常用的操作之一,而 Java 分页统一接口实现则是对数据库操作的抽象和封装。本文将对 ...
不同的数据库系统,如SQL Server、MySQL、Oracle,由于其设计原理和语法的不同,在实现分页功能上也有所差异。下面将详细介绍这三种数据库系统的分页方法。 ### SQL Server 分页 SQL Server 中实现分页主要通过`...
关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...
本文将详细介绍Oracle、MySQL以及SQL Server三种主流数据库系统中的分页技术,包括它们各自的实现方法和一些实用技巧。 ### 一、Oracle 分页 Oracle数据库提供了强大的功能来支持分页查询。在Oracle中,主要使用`...
本文将深入探讨SQL Server、MySQL和Oracle这三种主流数据库系统中的分页查询实现方式。 首先,我们来看SQL Server。SQL Server提供了一种称为"TOP"的关键字来实现分页。例如,如果我们想获取第1页(假设每页有10条...
### 数据库分页技术详解:MySQL、Oracle与SQL Server #### Oracle 分页 在Oracle数据库中实现分页功能,主要依赖于`ROWNUM`伪列。`ROWNUM`用于为查询结果集中的每一行分配一个唯一的编号,从1开始递增。通过控制`...
本话题主要聚焦于如何在Oracle、MySQL和SQL Server这三种主流关系型数据库中实现分页联合查询。 首先,我们来看Oracle数据库的分页查询。Oracle使用ROWNUM关键字来实现分页。例如,如果我们想获取第10到20条记录,...
1. **Oracle分页** Oracle使用`ROWNUM`伪列进行分页,示例如下: ```sql select * from ( select t.*, rownum k from emp t WHERE 条件 ) WHERE k > (页码 - 1) * pageSize AND k 页码 * pageSize ``` 这里的`...
几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。
- **Sqlserver**、**Oracle**、**MySql**、**PostgreSql** 和 **SqlLite** 都提供了丰富的内置函数支持,包括数学、日期时间、字符串处理等多方面功能。 #### 五、分页 分页是数据库中常见的需求之一,不同的...
本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...
Oracle分页 Oracle的分页语句使用ROWNUM关键字,语法为: ```sql SELECT * FROM (SELECT ROWNUM R, t.* FROM table_name WHERE ROWNUM ) WHERE R >= startIndex; ``` 其中,startIndex指定从第几行开始提取,...
Oracle 12c引入了`FETCH NEXT`和`OFFSET`,这使得Oracle的分页语法与MySQL和SQL Server等其他数据库系统更加兼容: ```sql SELECT * FROM your_table OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY; ``` 这种方法避免了...
在提供的SQL语句案例中,我们看到一个用于获取数据的SELECT语句。这个语句首先使用了窗口函数ROW_NUMBER(),它根据`FSalary`列降序地为T_Employee表中的每一行分配一个行号。然后,通过创建一个名为a的子查询,筛选...
- `SQLHelper.cs`:这是针对SQL Server的数据库操作帮助类,提供了执行SQL语句、存储过程,以及分页查询等功能。 - `OracleHelper.cs`:针对Oracle数据库的操作类,同样支持基本的SQL执行和分页处理。 - `MySql...
本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...
SQL Server 、MySQL 、Oracle数据库分页SQL语句
本文将详细介绍三种主流数据库(SQL Server、MySQL和Oracle)中的分页SQL语句实现方法。 #### SQL Server 的分页SQL语句实现 SQL Server 支持通过`TOP`关键字来实现分页查询。具体实现方式如下: 1. **查询第M页...
首先,MyBatis分页插件的核心功能是自动为SQL语句添加分页条件,这包括LIMIT子句(对于MySQL、MariaDB等)和ROWNUM或ROWNUMBER()(对于Oracle、SQLServer等)。通过这种方式,开发者无需手动编写复杂的分页查询,只...