標籤:style blog color 資料 sp div c on log
一:前言
自從出來實習後,基本上都沒有按下心來總結下自己學的知識點,剛剛好現在快要國慶了,沒有到深圳出差,在公司呆了三天,可以說是在公司打了三天的醬油啊,所以前兩天都是在看些正則的文檔,並且寫了下總結(等到要寫的時候才覺得好像也沒什麼要寫的啊),所以還是一點一點的寫吧,因為五月份的實習知識點自己也做了總結,但是一直都沒有具體分開載入到部落格園,我自己還是覺得好記性不如爛筆頭啊。
二:oracle的rownum
(1)在我剛剛出來時候覺得分頁很難搞,現在也學了這麼久,但是我自己覺得還是有點難度,可能是自己沒有偶真的去理解的吧,對於rownum,剛剛開始用的是時候就是提取一定範圍的資料,也可以用between····and來做,下面都會進行具體說一下。
(2)rownum
對於oracle來說,我們查詢一條資料,條件是rownum小於10
select id,bh,xm,xb from t_table where rownum<10
這條語句是可以查詢到資料的。
但是如果你的條件是查詢的條件是rownum>10;如果直接寫如下
select id,bh,xm,xb from t_table where rownum>10
這條sql語句是查詢不到資料的。
所以我上網查了下,都說的是oracle支援rownum<m(m為大於1正整數)即是該條件是成立的,而對於rownum>m(m為正整數)來說是不支援的,即是該條件是不成立的,所以就沒有資料。如果要查詢大於多少多少,必須要進行子查詢才行,下面具體舉列子說說。
我現在要查詢的10<rownum<100的資料,那麼我們一步步的寫如下:
第一步:查詢rownum小於100的資料
select id,bh,xm,xb from t_table where rownum<100
下一步我們就是想查詢大於10-的資料,如果你這樣寫那麼就不會查詢到資料
select rownum, id,bh,xm,xb from (select id,bh,xm,xb from t_table where rownum <100) where rownum>10
有可能不看到網上說需要給rownum命個別名如下:
select rownum rn, id,bh,xm,xb from (select id,bh,xm,xb from t_table where rownum <100) where rn>10
這樣的話會報錯,“rn標識符無效”,是由於查詢的條件必須是表中的資料,用別名的話是不行的。
比如:
select a.id as gg from t-table a where gg =1;
本條sql也是會報錯的,因為where後面的條件必須是資料庫中有的欄位名或者是子查詢出來的資料中包含的欄位
在寫句正確的如下
select a.id from t_table a where id=1;select bh from (select a.id as gg ,a.bh from t_xx a) where gg =1;
所以那麼這裡就應該懂了該如何寫
還有一點要注意:就是rownum必須要用別名,如果不用的話查詢不到資料,因為rownum不是某個表的列,不用別名的話就不知道是子查詢中的還是主查詢中的列了
select id,bh,xm,xb from(select rownum , id,bh,xm,xb from (select id,bh,xm,xb from t_table where rownum <100) )) where rownum>10
所以最終的查詢語句應該是這樣的:
select id,bh,xm,xb from(select rownum rn , id,bh,xm,xb from (select id,bh,xm,xb from t_table where rownum <100) )) where rn>10
三:總結
算是寫完了,以後自己想不明白時就可以多看看了。其實有時候靜下心來時想想一些自己以前想不通的地方還是有好處的。這裡的記載主要是提醒自己在寫子查詢語句時要注意欄位的用於的範圍。謹記謹記!!!
oracle中分頁的知識