天天看點

Oracle中的僞列

分頁查詢中,需要用到僞列rownum,代碼如下:

 select * from (select rownum rn, name from cost where rownum <= 6) where rn >3;

可是第一次用rownum,第二次用rn,位置不能變,否則出錯,第一次的rownum是oracle中的一個虛拟列,

rn是給這個rownum起的别名,也就是在子查詢中的别名要在外查詢中調用。需要注意一下,就是rownum是取出一個再編号,

是以在裡面我們可以寫<或者<=,而不能寫成>或者>=,因為取出一個才編号,要想取出大于3的,就必須先取出1,2,3的,因為按順序編号。

如果先按工資排序,再取出6到10号,可以寫成:

select * from (select rownum rn, t.* from (select * from cost order by sal desc) t where rownum < 11) where rn >= 6;

同樣注意什麼時候用rownum,什麼時候用rn.

這樣寫是不被允許的:

select rownum rn from cost where rn = 1;

要寫成:

select rownum rn from cost where rownum = 1;