SELECT *
FROM (SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM
FROM (
select * from tableA where tableA.id
in ( ... ) ) INNER_TABLE
WHERE ROWNUM <=4) OUTER_TABLE
WHERE OUTER_TABLE_ROWNUM >=1
这个语句用来数据库分页的,查出前4条数据,查出结果为
数据1
数据2
数据3
数据4
但如果我把红色标记的4换成5的话像查询出5条数据,结果为
数据2
数据4
数据5
数据1
数据3
导致该问题的原因不太明白,输出顺便跟什么有关?可以肯定的是跟红色标记的省略号内的内容有关,哪个高手能帮忙解释下?
FROM (SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM
FROM (
select * from tableA where tableA.id
in ( ... ) ) INNER_TABLE
WHERE ROWNUM <=4) OUTER_TABLE
WHERE OUTER_TABLE_ROWNUM >=1
这个语句用来数据库分页的,查出前4条数据,查出结果为
数据1
数据2
数据3
数据4
但如果我把红色标记的4换成5的话像查询出5条数据,结果为
数据2
数据4
数据5
数据1
数据3
导致该问题的原因不太明白,输出顺便跟什么有关?可以肯定的是跟红色标记的省略号内的内容有关,哪个高手能帮忙解释下?
另外说句,ORACLE没有什么默认排序的
正好我也个贴子在研究ROWNUM的一些问题,你也可以参考下
select patname ,price,sort from
(select patname,id,price,rownum as sort from
(select patname,id,price from bookcenter order by price desc)
where rownum <=10)
where sort>=6select patname ,price,sort from
(select patname,id,price,rownum as sort from
(select patname,id,price from bookcenter order by price desc)
)
where sort>=6 and sort <= 10两种方法,最近选一种.
这是什么意思
最好加个order by
FROM (SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM
FROM (
select * from tableA where tableA.id
in ( ... ) order by ... ) INNER_TABLE
WHERE ROWNUM <=4) OUTER_TABLE
WHERE OUTER_TABLE_ROWNUM >=1 在最底层加个Order BY就可以了