Oracle笔记 #01# 简单分页

rownum是Oracle为查询结果分配的有序编号(总是从1~n)。言下之意,rownum字段本来并不存在于表中,而是经查询后才分配的。

举一个例子:

SELECT rownum, name, price 
FROM item 
WHERE user_id=1000 AND status=0;

错误的示范(试图直接用rownum字段):

SELECT rownum, name, price 
FROM item 
WHERE user_id=1000 AND status=0 AND rownum > 1;

正确的写法(采用简单的子查询,将rownum临时固定一下。。):

SELECT *
FROM (
SELECT rownum AS r, name, price 
FROM item 
WHERE user_id=1000 AND status=0
ORDER BY id DESC
) temp 
WHERE r >= 1 AND r < 6;

ORDER BY xxx DESC 是一种默认的习惯写法,因为一般总是倾向于先拿比较新的数据。

然后网上有很多优化方案,有时间可以研究研究。。。。。。。。。。

 

posted @ 2018-12-29 19:47  xkfx  阅读(159)  评论(0编辑  收藏  举报