打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
关于Oracle、MySQL、SqlServer三个库的分页SQL的小总结
昵称10504424
>《Asp.Net》
2012.09.10
关注
一、概述本文主要是针对日常系统开发中的数据分页方式方法进行总结,按照数据库类别,分为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功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×