SELECT t.ROWNUM, t* FROM(
SELECT t.ROWNUM, t.* FROM TABLE_NAME t
WHERE t.ROWNUM<341
)WHERE t.ROWNUM>335;
ROWNUM是ORACLE的一个“伪列”,顾名思义,就是说其实在一列是不存在于实际的表中的。。。。。。。在一列是在查询之后才给每一结果加上去的。。。也就是说。。。你要是直接查“SELECT t.ROWNUM, t.* FROM TABLE_NAME t WHERE t.ROWNUM>15”这句话是没有任何的意义的。。。。ROWNUM是在结果查出来以后赋值上去的。。。要是这样子写的话永远也没有结果的。。。。。不过要是查ROWNUM=1的话是有一个结果的。。。。。比1大的自然数就不行了。。。
但是如果遇到要按照某一列进行排序的话。。。好像就比较麻烦了。。。。。
我知道的情况是这样子的:
(假设表里有ID字段按照ID排序查出第115条到145条的的记录)
SELECT t.ROWNUM, t* FROM(
SELECT t.ROWNUM, t.* FROM(
SELECT t.* FROM TABLE_NAME t ORDER BY t.ID DESC
)
WHERE t.ROWNUM<341
)WHERE t.ROWNUM>335;
好想看起来很繁琐。。。不过我也不清楚其他的方法了。。。。。。。
好像也可以用WHERE t.ROWNUM BETWEEN 335 AND 341,不过我认为速度上可能还是要比上边的慢。。。。