<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    王三

    終日乾乾
    posts - 1, comments - 0, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    2012年8月23日

    1>:oracle中帶排序的分頁sql,至少包含三層,若無order by可以兩層,通用模板為(hibernate也是采用這種方法):

        select temp2.* from(
            select rownum num,temp1.* from(
                   SQL查詢
           ) temp1 where rownum<=?
       )temp2 where temp2.num>?

        如果是第一頁的分頁,可以簡化為兩層:

        select * from(
            SQL查詢
        ) where rownum <=?

    2>:有些特性需要注意:

        a:最內層的sql查詢中的order by項一定要保證記錄的唯一性,否則,若排序字段有重復記錄,則分頁查詢后,翻頁后數據會出現重復和缺少,因為oracle沒有默認排序一說,mysql的會按主鍵自然排序(?待確認),導致兩次分頁查詢的order by結果不一致,哎,這樣查詢時非冪等的。
        b:rownum是個很蛋疼的偽列,它的對滿足查詢條件(不包括“含有rownum的查詢條件”和“排序條件”)的結果集的順序記錄,并且在生成結果集時逐一遞增,也就是發現對滿足查詢條件(不包括“含有rownum的查詢條件”和“排序條件”) 的第一條記錄,rownum附加為記錄上并賦值為(當前結果集的總數+1)1,然后若有rownum查詢條件,則使用rownum查詢條件來判斷,若符合則繼續查詢,否則舍棄記錄,然后接著查詢,以此推之,那么rownum一定從1開始,所以對<、<=可以很好支持,對!=可以像<一樣詭異支持,對其他的=、>、>=、between...and不為1的不支持了。
        c:上面說rownum的賦值是在orderby前面的,所以若要利用好orderby,就必須使用子查詢,將orderby語句放在內層無rownum的語句中。

    posted @ 2012-08-23 14:37 王三 閱讀(152) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲а∨天堂久久精品9966 | 亚洲一欧洲中文字幕在线| 亚洲国产成人乱码精品女人久久久不卡| 亚洲黄黄黄网站在线观看| 男人的天堂av亚洲一区2区| 日本免费大黄在线观看| 久久99国产亚洲精品观看| 黄色网站软件app在线观看免费| 亚洲熟妇无码另类久久久| 亚洲中文字幕乱码熟女在线| 免费看搞黄视频网站| 亚洲国产一级在线观看| 一个人看的在线免费视频| 成人免费淫片在线费观看| 亚洲国语精品自产拍在线观看| 免费国产99久久久香蕉| 亚洲精品**中文毛片| 久久久久久久久久久免费精品| 亚洲日韩精品射精日| 0588影视手机免费看片| 亚洲综合成人婷婷五月网址| 免费a级毛片大学生免费观看| 国产精品小视频免费无限app| 亚洲AV无码国产精品色午友在线| 1000部羞羞禁止免费观看视频| 亚洲人成伊人成综合网久久久| 国产精成人品日日拍夜夜免费| 亚洲国产中文在线二区三区免| 国产hs免费高清在线观看| 成人免费av一区二区三区| 亚洲最大在线视频| 国产无遮挡又黄又爽免费视频| 亚洲成aⅴ人片久青草影院按摩| 亚洲伊人成无码综合网| 一级黄色片免费观看| 亚洲精品在线观看视频| 日韩成全视频观看免费观看高清| 国产特黄一级一片免费| 亚洲中文字幕人成乱码| 亚洲国产精品视频| 五月婷婷在线免费观看|