今天在用
oracle分頁查詢資料的時候出現了重複資料,有的資料無法查出,很鬱悶,想了想,找了資料,發現問題
分頁語句:
sql**
select
*
from
( select
row_.*,
rownum rownum_
from
(
select bb.*from(
select
bw.id,
bw.nick_name,
bw.is_vip,
bw.fans_num,
bw.blog_num,
bwm.image_urls,
bwm.image_type
from
bw_user bw
left join
bw_use***ce_image bwm
on bw.headimgid=bwm.id ) bb
order by bb.fans_num desc ) row_
where
rownum <= 10
)
where
rownum_ > 0
這樣查詢的時候出現了重複資料
原因:fans_num 這個欄位是不固定的,也就是說是動態的,隨時都可能在改變,導致資料出現重複,如果這個欄位是固定的,就不會出現重複資料
解決辦法:如果不能確定排序欄位是唯一的,必須新增另外乙個排序字段,該欄位最好是唯一索引鍵
sql**
select
*
from
( select
row_.*,
rownum rownum_
from
(
select bb.*from(
select
bw.id,
bw.nick_name,
bw.is_vip,
bw.fans_num,
bw.blog_num,
bwm.image_urls,
bwm.image_type
from
bw_user bw
left join
bw_use***ce_image bwm
on bw.headimgid=bwm.id ) bb
order by bb.fans_num desc ,bb.id desc
) row_
where
rownum <= 10
)
where
rownum_ > 0
在裡面新增了id排序,id是主鍵,是唯一的,就不會重現重複資料了
注:如果排序的第乙個字段(fans_num)改變的比較快,還是可能出現重複資料的,只是概率比較小
鬱悶了一上午,終於知道弄出來了,以前排序都沒注意到這個問題
select * from (
select a.*, rownum rn
from (select * from table_name) a
where rownum <= n)
where rn > m
這裡的rownum是乙個偽列,它是oracle為查詢結果所編的乙個號,第一行的 rownum為1,第二行為2,以此類推。
oracle分頁出現重複資料
如果order by的排序欄位的內容不是唯一的。例如你按錄入日期 lrrq 排序 即 order by col date 而col date又只是 yyyy mm dd 的格式而不是時間戳的格式的話,你的排序欄位不唯一 有可能兩條以上的資料錄入日期都是 2008 11 26 在分頁的時候第一頁的內容...
資料庫問題 oracle查詢出現重複資料
select from select row rownum rownum from select from pg jdlk match result this row where rownum where rownum 資料量不是一條兩條,而是很多條,需要分頁顯示,而上面這個sql語句是最常用的分頁...
oracle分頁查詢資料重複問題
在oracle分頁查詢中,我們採用類似以下所示的公認的比較高效的資料庫分頁查詢語句 effective oracle by design中有描述 眾多oracle使用者也做過測試 寫道 select from select a.rownum rn from select from table nam...