首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于伪行的有关问题,求高手!

2012-08-26 
关于伪行的问题,求高手!!!假设有一个表只有书名和作者,一共有10行,那求第五到第十行的书名和作者,除了用mi

关于伪行的问题,求高手!!!
假设有一个表只有书名和作者,一共有10行,那求第五到第十行的书名和作者,除了用minus外,即(
select rownum ,title,author from where rownum<11
minus
select rownum,title,author from where rownum>5;
)
请问用sql语句子查询怎么写?

[解决办法]
select * 
from
(select a.*,row_number() over(order by title) rn
from tb a
)
where rn between 5 and 10
;
[解决办法]

探讨
假设有一个表只有书名和作者,一共有10行,那求第五到第十行的书名和作者,除了用minus外,即(
select rownum ,title,author from where rownum<11
minus
select rownum,title,author from where rownum>5;
)
请问用sql语句子查询怎么写?

[解决办法]
SQL code
方法一:select * from(select a.*,row_number() over( order by title) rnfrom tb a)where rn between 5 and 10方法二:select * from (select a.*,rownum as numbers from tb a where a.rownum<=10) b where b.rownum>=6;
[解决办法]
另外注意rownum伪劣是在数据提取出来后再加上的序号,因此在where中是不能直接 rownum>的
[解决办法]
探讨

SQL code

方法一:
select *
from
(select a.*,row_number() over( order by title) rn
from tb a
)
where rn between 5 and 10
方法二:
select * from (select a.*,rownum as numbers from tb a where a.rownum<=10) b……

[解决办法]
因为rownum不能between 5 and 10,所以需要用rownum取别名rn伪列构造子查询,再用rn between 5 and 10
[解决办法]
楼主的这个问题是Oracle的分页问题,关于Oracle的分页是跟其它的数据库有些不同,你可以参考如下这个例子来理解分页的问题。

分页查询格式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

热点排行