您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
在ORACLE中實(shí)現(xiàn)SELECT TOP N的方法
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/3/26 11:44:20 ] 推薦標(biāo)簽:SELECT 功能測(cè)試 ORACLE

2.在TOP N紀(jì)錄中抽出第M(M <= N)條記錄

 在得到了TOP N的數(shù)據(jù)之后,為了抽出這N條記錄中的第M條記錄,我們可以考慮從ROWNUM著手。我們知道,ROWNUM是記錄表中數(shù)據(jù)編號(hào)的一個(gè)隱藏子段,所以可以在得到TOP N條記錄的時(shí)候同時(shí)抽出記錄的ROWNUM,然后再?gòu)倪@N條記錄中抽取記錄編號(hào)為M的記錄,即使我們希望得到的結(jié)果。

 從上面的分析可以很容易得到下面的SQL語句。

  SELECT列名1...列名nFROM

     (

     SELECT ROWNUM RECNO,列名1...列名nFROM

       (SELECT列名1...列名nFROM表名ORDER BY列名1...列名n)

     WHERE ROWNUM <= N(抽出記錄數(shù))

   ORDER BY ROWNUM ASC

     )

   WHERE RECNO = M(M <= N)

 同樣以上表的數(shù)據(jù)為基礎(chǔ),那么得到以NAME的字母順排序的第二個(gè)顧客的信息的SQL語句應(yīng)該這樣寫:

   SELECT ID, NAME FROM

     (

      SELECT ROWNUM RECNO, ID, NAME FROM

        (SELECT * FROM CUSTOMER ORDER BY NAME)

         WHERE ROWNUM <= 3

         ORDER BY ROWNUM ASC )

       WHERE RECNO = 2

    結(jié)果則為:

   ID NAME

    05 fifth

3.抽出按某種方式排序的記錄集中的第N條記錄

  在2的說明中,當(dāng)M = N的時(shí)候,即為我們的標(biāo)題講的結(jié)果。實(shí)際上,2的做法在里面N>M的部分的數(shù)據(jù)是基本上不會(huì)用到的,我們僅僅是為了說明方便而采用。

  如上所述,則SQL語句應(yīng)為:

   SELECT列名1...列名nFROM

     (

      SELECT ROWNUM RECNO,列名1...列名nFROM

        (SELECT列名1...列名nFROM表名ORDER BY列名1...列名n)

         WHERE ROWNUM <= N(抽出記錄數(shù))

      ORDER BY ROWNUM ASC

     )

     WHERE RECNO = N

    那么,2中的例子的SQL語句則為:

    SELECT ID, NAME FROM

      (

       SELECT ROWNUM RECNO, ID, NAME FROM

         (SELECT * FROM CUSTOMER ORDER BY NAME)

       WHERE ROWNUM <= 2

       ORDER BY ROWNUM ASC

      )

      WHERE RECNO = 2

    結(jié)果為:

   ID NAME

    05 fifth

上一頁123下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd