sqlserver oracle mysql 分页查询
? ?最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... ???????(一)、?mysql的分页查询 ????????mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:其实的索引 * pageSize:每页显示的记录数 */ select o.* from (sql) o limit firstIndex,pageSize 如下面的截图,每页显示的记录数为20: ???????????????????????????????????????????????? ?查询(1-20)这20条记录 ????????????????????????????????????????? ?? 查询(21-40)这20条记录
????????mysql的分页查询就这么简单...... ??(二)、sqlserver2005的分页查询 ????在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,效率有了很大的提高,不过sql语句比较复杂,下面给出分页查询的通式: /* * firstIndex:起始索引 * pageSize:每页显示的数量 * orderColumn:排序的字段名 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句 */ select top pageSize o.from (select row_number() over(order by orderColumn) as rownumber,from(sql) as o where rownumber>firstIndex; ?下面看截图,每页显示20条记录数:??????????????????????????????????????????????????????????? ?查询(1-20)这20条记录
???????????????????????????????????????????????????????? 查询(21-40)这20条记录
??? 知道了sqlserver中的row_number函数,分页也就简单了..... ? (三)、oracle分页查询 ????接下来重点说说oracle的分页查询,oracle的分页查询方法相对来说要多点,ROWNUM、row_number(),今天主要将两种效率稍好的分页查询语句。 ??? ①ROWNUM查询分页通式: /* * firstIndex:起始索引 * pageSize:每页显示的数量 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句 */ select from(select a.*,ROWNUM rn sql) a where ROWNUM<=(firstIndex+pageSize)) where rnfirstIndex 以下截图是以这种方式进行的查询语句: ??????????????????????????????????????????????????????????查询(1-21)这20条记录*****(没有ID=6的记录,所以查询到的最大ID为21) ???????????????????????????????????????????????????? ??查询(22-41)这20条记录*****(没有ID=6的记录,所以开始查询到的ID为22,以及最大ID为41)
? ??? ②row_number()解析函数分页查询通式: /* * firstIndex:起始索引 * pageSize:每页显示的数量 * orderColumn:排序的字段名 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句 */ select select select t.as rownumber sql) t) p where p.rownumberfirstIndex) where rownum<= ?以下截图是使用row_number()方式的分页查询效果: |