SqlServer2005 查詢 第五講 top


今天我們來說sql命令中得參數top

top

  • top【 最前面若干個記錄,專屬於SqlServer2005的語法,不可移植到其他庫。oracle中是用rownum<6來實現輸出前5行記錄。】
    下面我們引入一個題目來分析一下這個top參數
    請查詢在scott這個庫中的emp表的前三條記錄
    select top 3 * from emp // --這里的top 3是指前3條記錄,*是指所有字段的值
                           // -- 所以在執行的時候首先會找到emp表,然后開始查詢表中的                                                          
                           //-- 第一條記錄,發現符合top 3 這個參數的特質,於是就輸出
                           //-- 這條記錄的所有字段的值
                           //--然后開始查詢第二條記錄......一直這樣查詢下去,直到查詢
                           //--到第四條記錄的時候       
                           //--發現不符合這個top 3這個參數的特征,於是
                           //--就,不進行輸出了,也不在進行下一條記錄的查詢了

下面我們來看一下上面這一條sql命令所執行的結果

我們可以發現只輸出了前emp表的前三條記錄

  • top還可以和百分比的結合的來使用。
    例如
  select top 15 percent * from emp  //--這里我們可以把top 15 percent作為一個整體
                                   //-- 表示輸出emp表的前%15個記錄
                                   //-- 注意:如果表的前%15不是一個整數的話
                                   // -- 就進位
                                   //-- 假如emp表有14條,那么14*%15=2.1。
                                   //-- 則就會輸出前三條記錄的所有字段的值
                                   //-- 執行的順序的話,可以參照上一條sal命令的
                                   //注釋

下面我們來看一下上面這一條sql命令所執行的結果

我們會發現,也只輸出了emp表前面的三條記錄

  • 注意下面這條sql命令是錯誤的
    select top 2 from emp //之所以這條命令是錯誤的,是因為當,查詢到前面兩條記錄的時
    //侯,這條sql命令卻並沒有有告訴你應該查詢那個字段的值
    //或者那幾個字段的值,或者所有字段的值

我們再來分析一個題目

  • --把工資在1500到3000(包括1500 到3000)員工的工資最高前4個按降序輸出
  select top 4 * (4)
    from emp (1)
        where sal between 1500 and 3000 (2)
                order by sal desc(3)
               //-- order by 是排序的意思,以后我會詳細的說,desc是降序的意思,默認情況下是升序的意思。
               //--我們來看這個命令的執行情況
               //--首先會執行(1)步找到emp這個表,然后查詢第一條記錄
               //--然后執行第(2)步where后面的語句,對原始的數據進行過濾
              // --然后會執行(3)步,按照sal這個字段進行降序排序。              
              //--注意這個第(3)步這個sql命令不好理解,我認為,在這個sql命令的底層中應該用了某種算法。
              //-- 當第一次執行到order by sal desc的時候,他應該就能遍歷整個emp表然后按照sal這個字段的值降序。
               //-- 然后就會執行最后的第(4)步

下面我們來看一下上面這一條sql命令所執行的結果

我們可以發現輸出的是4條記錄,sal這個字段的值都是在1500到3000這個范圍,並且這個字段的值是降序的
今天的這一講就到這里,下一講我們來講 null參數
***如果你們還有什么不懂的,可以加我qq485536603


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM