SqlServer2005 查詢 第七講 order by

今天咱們來說sql命令中的參數order by的用法

order by

  • order by:能夠理解成【以某個字段排序】
  • order by a,b // a和b都按升序
  • order by a,b desc // a升序,b降序
  • order by a desc, b // a降序,b升序
  • order by a desc,b desc //a和b都按降序
  • 若是不指定排序的標準,則默認是升序,升序用asc表示,默承認以不寫。爲一個字段指定的排序標準並不會對另外一個字段產生影響,強烈建議爲每一個字段都指定排序的標準。
  • asc是升序的意思 默承認以不寫 desc是降序算法

    下面咱們來看例子來詳細分析sql命令中的參數order by

    這些sql命令的樣例都是基於scott數據庫中的emp表
select * from emp order by sal;     -- //若是不加什麼排序標準的話,則默認是按照升序排序
                                      -- //下面咱們來分析這條sql命令
                                      -- //首先會執行這個from emp,來找到emp表。
                                      -- //而後執行order by sal,按照sal這個字段進行升序排序
                                      -- //注意這個order by這個命令,我認爲,在這個sql命令的底層中應該用了某種算法。
                                      -- //當第一次執行到order by sal 的時候,他應該就能遍歷整個emp表的sal字段
                                      -- //而後按照sal這個字段的值進行排序。
                                      -- //這時候每條記錄都以sal這個字段的值按升序排好了
                                      -- //而後開始查詢第一條記錄,而且輸出第一條記錄全部字段的值
                                      -- //而後查詢第二條記錄,而後第三條記錄。。。。。。
                                      -- //直到查詢到最後一條記錄

下面是上面這條sql命令所執行的結果


咱們能夠看到sal這個字段的值都在增長sql

咱們再來看一個sql命令

select * from emp order by deptno, sal      -- //先按照deptno升序排序,若是deptno相同,再按照sal升序排序
                                                -- //執行的的順序和上面同樣。

下面是上面這條sql命令所執行的結果


咱們能夠看到deptno是按升序排序的,當deptno相同時,再按照sal進行升序排序數據庫

由於比較簡單,因此下面的例子我就不一一分析了code

select * from emp order by deptno desc, sal;
    --先按deptno降序排序 若是deptno相同 再按照sal升序排序
    --記住sal是升序不是降序
    --order by a desc, b, c, d    desc只對a產生影響 不會對後面的b  c d 產生影響

select * from emp order by deptno, sal desc
    --問題:desc是否會對deptno產生影響?
    --答案:不會
    --先按deptno升序,若是deptno相同,再按sal降序

這一講就到這裏,下一講咱們來講模糊查詢
若是還有什麼不懂的,能夠加我qq485536603blog

相關文章
相關標籤/搜索