日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分段查询

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分段查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
相比Oracle,PostgreSQL中分段查詢的區別在以下幾點:
1. 沒有rownum項,而是用ROW_NUMBER() OVER()表示;
2. 子查詢必須加別名,例如“as aa”,否則語法檢查不通過;

另外分段查詢的一個注意事項:rownum只能做“<”運算。如果寫“>”、“>=”、“between”的時候,起始值只能是0或1。
因為rownum僅對查詢結果排序生效,當寫出“>1”時,第一條記錄會被排除,然后第二條記錄會變成第一條記錄,接著第一條記錄又被排除,……,所以查詢會成功,但查詢結果必定為空。務必注意這一點!!!

ORACLE
select column_name_a, rownum from table_name_a where column_name_a like 'condition%'; select column_name_a, no from (select column_name_a, rownum no from table_name_a where column_name_a like 'condition%') where no > 0 and no <=5; select column_name_a, no from (select column_name_a, rownum no from table_name_a where column_name_a like 'condition%') where no > 5 and no <=10; select column_name_a, no from (select column_name_a, rownum no from table_name_a where column_name_a like 'condition%') where no > 10 and no <=15;
PGSQL
select column_name_a, no from (select column_name_a, ROW_NUMBER() OVER() as no from table_name_a where column_name_a like 'condition%') as aa where no >0 and no <=5; select column_name_a, no from (select column_name_a, ROW_NUMBER() OVER() as no from table_name_a where column_name_a like 'condition%') as aa where no >5 and no <=10; select column_name_a, no from (select column_name_a, ROW_NUMBER() OVER() as no from table_name_a where column_name_a like 'condition%') as aa where no >10 and no <=15;

帶排序功能的高效寫法

ORACLE

select column_name_a from (select column_name_a, row_number() over (order by sal) no from table_name_a where column_name_a like 'condition%' order by column_name_a) where no > 0 and no <= 5; select column_name_a from (select column_name_a, row_number() over (order by sal) no from table_name_a where column_name_a like 'condition%' order by column_name_a) where no > 5 and no <= 10; select column_name_a from (select column_name_a, row_number() over (order by sal) no from table_name_a where column_name_a like 'condition%' order by column_name_a) where no > 10 and no <= 15;
PGSQL

select column_name_a from table_name_a where column_name_a like 'condition%' limit 5 offset 0; select column_name_a from table_name_a where column_name_a like 'condition%' limit 5 offset 5; select column_name_a from table_name_a where column_name_a like 'condition%' limit 5 offset 10;

總結

以上是生活随笔為你收集整理的分段查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。