打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于Oracle、MySQL、SqlServer三个库的分页SQL的小总结
一、概述本文主要是针对日常系统开发中的数据分页方式方法进行总结,按照数据库类别,分为Mysql、SQL Server和Oracle三部分,由于知识结构所限,可能总结的方法都不是太深入,只是简单的应用型的方法,对于这些方法的内部逻辑和性能评测,则不是很明确。二、SQL Server 有三种方法可以实现:   1、这种方法可能是实际应用中使用最多的,在轻量级的开发中,它的性能弊端也不是太明显,称之为Sub-Query:    语句: 1 select top @ pagesize * from(select top (@pageindex+1)*@pagesize * from tbl order by condition) as tbl2 order by tb2.condition desc   2、这是至少要在SQL Server 2005sp2往上的版本才有的一个方法,ROW_NUMBER()     语句: 1 WITH ListOrder AS2 (SELECT A.*,ROW_NUMBER() OVER (ORDER BY A.sortcolumn) AS RowNumber FROM tbl A )3 SELECT DISTINCT TOP @pagesize …FROM ListOrder WHERE RowNumber > @pagesize*@pageindex   3、这一条则是利用了另外一个方法,RowCount   语句: 1 DECLARE @Sort int/* the type of the sorting column */2 SET ROWCOUNT @startrow3 SELECT @Sort = sortcolumn FROM tbl ORDER BY sortcolumn4 SET ROWCOUNT @pagesize5 SELECT …6 FROM tbl WHERE sortcolumn >= @Sort ORDER BY sortcolumn 三、Mysql  实现Top N及M至N段的记录查询  我们可以利用MySQL中提供的一个强大的关键字LIMIT来完成这项功能。  LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下: 1 SELECT …2 FROM tbl ORDER BY sortcolumn LIMIT offset, pagesize 四、Oracle  相较而言Oracle提供了另外一个强大的方法 Rownum,可以直接取得从startrow到endrow的所有行,语法如下: 1 SELECT * from table where ROWNUM < (pagesize*pageindex + 1)2 MINUS 3 SELECT * FROM table where ROWNUM < ((pagesize*pageindex + 1)- pagesize)   如果有各种事先的子查询以及分组、排序之类的需要的话,可以这样: 1 SELECT* from (SELECT * FROM table WHERE filters ORDER BY sortcolumn ASC) where ROWNUM < (pagesize*pageindex+1)2 MINUS 3 SELECT * FROM (SELECT * FROM table WHERE filters ORDER BY sortcolumn ASC) where ROWNUM < ((pagesize*pageindex+1)-pagesize)   其实我属意的方式应该是这样: 1 WITH LISTORDER AS (SELECT * FROM table WHERE filters ORDER BY sortcolumn ASC)2 SELECT* from LISTORDER where ROWNUM < (pagesize*pageindex+1)3 MINUS 4 SELECT * FROM LISTORDER where ROWNUM < ((pagesize*pageindex+1)-pagesize)   可是现实给我我巨大的打击...后一种方式取得的数据不但数量会多一条,而且更关键的是...跟前面的语句取得的数据完全不一样;  好吧,我承认,对于ORACLE我确实不熟,可是这真心不是我想要的啊,只想问一句:为毛呢!?
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Mysql存储过程(三)
三大数据库分页方法(Oracle/MySQL/SQL)
Sql Server 数据分页
c# oracle 分页
一个非常简单却非常实用的分页存储过程
sql语句分页多种方式ROW
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服