• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發(fā)教程 > 詳細頁面

        DB2 UDB 7、ORACLE 8i、SQL SERVER 7數(shù)據(jù)庫中SELECT TOP N 問題 (轉發(fā))

        DB2 UDB 7、ORACLE 8i、SQL SERVER 7數(shù)據(jù)庫中SELECT TOP N 問題 (轉發(fā))

        更新時間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

        SELECT TOP N 問題

          本貼討論SELECT TOP N問題.
          現(xiàn)在正在一家計算機公司兼職,開發(fā)ASP應用. 在最近的一個商業(yè)項目里有這樣一個需求:用戶在查詢時,只需要按照某(些)列排序后TOP 20的紀錄. SQL SERVER 7很好地支持了TOP N 操作,但考慮到系統(tǒng)移植問題, 我又考慮在其他幾個主流DBMSs中如何實現(xiàn). 鑒于只有DB2 UDB 7,ORACLE 8i,SQL SERVER 7,本貼僅討論這三個DBMS.
          簡單地說,TOP N問題就是:在SELECT中,僅選擇按照某(些)列排序后TOP N的紀錄. 考慮到等值問題,又可以分為兩種: 一是僅僅返回N條紀錄(M 1), 二是還包括所有于第N條等值的紀錄(M 2). 當然最內(nèi)層的子查詢也可以有其他的子句, 或者TOP N也可以應用在沒有ORDER BY的情況下,這樣更簡單.

        1. SQL SERVER 7: 用 TOP N (WITH TIES)
        M1:
        SELECT TOP N * FROM MYTABLE ORDER BY ORD_COL;

        M2:
        SELECT TOP N WITH TIES * FROM MYTABLE ORDER BY ORD_COL;
        注: SQL SERVER 7提供了PERCENT N WITH TIES, ACCESS 中提供了TOP N,但含義是M 2.

        2. ORACLE 8i: 用 ROWNUM<=N
        M1:
        SELECT * FROM
           ( SELECT * FROM MYTABLE ORDER BY ORD_COL DESC)
        WHERE ROWNUM<=N
        M2:
        SELECT * FROM MYTABLE WHERE ORD_COL>=
          (SELECT MIN(ORD_COL) FROM
            ( SELECT * FROM MYTABLE ORDER BY ORD_COL DESC)
          WHERE ROWNUM<=N)
        ORDER BY ORD_COL DESC
        注意以下兩種錯誤用法:
        WRONG 1:
        SELECT * FROM MYTABLE
        WHERE ROWID<=N
        ORDER BY ORD_COL DESC;

        WRONG 2:(因為WHERE ROWNUM<=N 在ORDER BY 前執(zhí)行)
        SELECT * FROM MYTABLE
        WHERE ROWNUM<=N
        ORDER BY ORD_COL DESC;

        3: DB2
        用FETCH FIRST N ROWS ONLY
        M1:
        SELECT * FROM MYTABLE
        ORDER BY ORD_COL DESC
        FETCH FIRST N ROWS ONLY
        M2:
        沒有找到,因為DB2不允許在FROM中嵌套有ORDER BY子句的子查詢.

        還不清楚ORACLE的M 2有沒有更好的辦法,以及其他的DBMS如何實現(xiàn)TOP N操作,請其他朋友補充.
        ----------------------------------------------------------------------------------
        各語句已經(jīng)測試過, EXAMPLE:
        create table mytable(mykey int, ord_col int);
        insert into mytable values(1, 100);
        insert into mytable values(2, 100);
        insert into mytable values(3, 99);
        insert into mytable values(4, 101);
        insert into mytable values(5, 101);


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产免费观看网站| 4338×亚洲全国最大色成网站| 99re热免费精品视频观看 | 久久精品国产69国产精品亚洲| 亚洲精品无码成人片久久不卡| 成年网站免费视频A在线双飞| 亚洲国产午夜电影在线入口| 亚洲av午夜国产精品无码中文字| 亚洲av成本人无码网站| 久青草视频97国内免费影视| 午夜国产精品免费观看| 国产亚洲色婷婷久久99精品| 亚洲mv国产精品mv日本mv| 免费无码一区二区| 亚洲国产精品国产自在在线| 亚洲综合久久一本伊伊区| 亚洲国产AV无码专区亚洲AV| 久久国产精品免费专区| 国产啪亚洲国产精品无码| 午夜影院免费观看| 免费看无码自慰一区二区| 久久亚洲AV无码精品色午夜麻| 成人免费a级毛片| 在线免费观看h片| 久久久久亚洲av成人无码电影| 57pao一国产成永久免费| 亚洲AV一区二区三区四区| 国产大片91精品免费看3| 亚洲人成图片小说网站| A片在线免费观看| 久久精品亚洲精品国产色婷| 丁香花免费完整高清观看| 日本亚洲中午字幕乱码| 亚洲精品制服丝袜四区| 日韩版码免费福利视频| 免费无毒a网站在线观看| 亚洲电影免费在线观看| 永久免费av无码网站大全| 免费毛片在线看不用播放器| 久久精品国产亚洲AV蜜臀色欲| 亚洲中久无码不卡永久在线观看|