春风博客

春天里,百花香...

导航

<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

统计

公告

MAIL: junglesong@gmail.com
MSN: junglesong_5@hotmail.com

Locations of visitors to this page

常用链接

留言簿(11)

随笔分类(224)

随笔档案(126)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

分页SQL语句分析(Oracle数据库)

本来是要和前一篇JDBC分页示例(Oracle数据库) 写在一起的,担心贴不上故而分开了。

做个小广告,以下的图就是从本人开发的免费工具SqlToolBox中截取来的,大家有兴趣可以试用一下。

一.Account表建表语句。
create table Account(
   ID 
VARCHAR2(255not null primary key
   
count number(10,2),
   tid 
VARCHAR2(255),
   userid 
VARCHAR2(255),
   addTime 
VARCHAR2(255)
)

二.Account表所有数据.


三.完整的执行分页查询的SQL语句.
 Select     
        
*
 
from       
        (
         
Select     
                t01.
*,
                rownum 
as newRowNum
         
from       
                (
                 
Select     
                        
*
                 
from       
                        Account
                 
where     
                        
count >='0' and 
                        
count <='999999' and 
                        userid
='18567' order by addTime
                ) t01
         
where     
                rownum
<='10'
        )
 
where     
        newRowNum
>'0'
以上整形效果由SqlToolBox完成.

查询出的结果:


四.最内层子查询语句.
这一次查询目的是找出符合条件的记录并排序.这是查询的关键部分,你要修改成你的查询代码就修改这部分内容。
SQL语句如下:
                 Select     
                        
*
                 
from       
                        Account
                 
where     
                        
count >='0' and 
                        
count <='999999' and 
                        userid
='18567' order by addTime

结果如下:


五.第二层子查询
这一层子查询的主要目的是用rownum给上面的记录加上行号,这是为最外层子查询做准备的.
SQl语句:
         Select     
                t01.
*,
                rownum 
as newRowNum
         
from       
                (
                 
Select     
                        
*
                 
from       
                        Account
                 
where     
                        
count >='0' and 
                        
count <='999999' and 
                        userid
='18567' order by addTime
                ) t01

查询结果,大家可以看到右边比第四步结果图多出来一列(newRowNum这一列).


六.最后的查询.
前面的查询已经出来符合条件的,排完序的,有行号的结果集,接下来对行区间进行限制就可以了,也就是指定newRowNum的范围,这样出来的就是分页的结果.



以上.

posted on 2008-02-14 13:05 sitinspring 阅读(1811) 评论(3)  编辑  收藏 所属分类: Java基础

评论

# re: 分页SQL语句分析(Oracle数据库) 2011-02-17 17:28 爱爱爱

t01
是那张表啊 ~~~~是单独搞出来的么  回复  更多评论   

# re: 分页SQL语句分析(Oracle数据库) 2011-02-17 21:00 何杨

@爱爱爱

一个查询的别名。

t01=Select
*
from
Account
where
count >='0' and
count <='999999' and
userid='18567' order by addTime
  回复  更多评论   

# re: 分页SQL语句分析(Oracle数据库) 2011-02-18 08:49 爱爱爱

@何杨
太感谢了,我一直以为是一个表名,现在清楚了,谢谢~!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
sitinspring(http://www.blogjava.net)原创,转载请注明出处.