SqlServer2005 查詢 第七講 order by
阿新 • • 發佈:2019-11-19
今天我們來講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
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命令
select * from emp order by deptno, sal -- //先按照deptno升序排序,如果deptno相同,再按照sal升序排序
-- //執行的的順序和上面一樣。
下面是上面這條sql命令所執行的結果
我們可以看到deptno是按升序排序的,當deptno相同時,再按照sal進行升序排序
因為比較簡單,所以下面的例子我就不一一分析了
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降序
這一講就到這裡,下一講我們來說模糊查詢
如果還有什麼不懂的,可以加我qq485536603