在查詢過程中,我們經常需要按照某一列對查詢結果進行排序,這在SQL語言中使用ORDER BY子句來實現。
具體語法格式如下:
SELECT <類名表> FROM <表名> [查詢條件] ORDER BY <要排序的列名> ASC | DESC
其中,紅色字體部分就是要進行排序的子句,ASC為按排序依據列進行升序排序,即列的值從小到大進行排序;DESC為按排序依據列進行降序排序,即列值從大到小進行排序。
如果,沒有指定排序方法,即省略ASC和DESC的話,則按升序(ASC)進行排序。
下面舉例說明:
假設數據庫中有一個學生表(student),具有學號(sno),姓名(sname),性別(ssex),年齡(sage)等列。
(1)查詢全部學生信息,結果按年齡從大到小進行排序(降序)
查詢語句為:
SELECT * FROM student ORDER BY sage DESC
(2)查詢女學生的學號、姓名和年齡,結果按年齡進行升序排序(從小到大)
查詢語句為:
SELECT sno, sname, sage FROM student WHERE ssex = '女' ORDER BY sage ASC
其中,ASC可以省略,因為默認即為升序排序
SELECT sno, sname, sage FROM student WHERE ssex = '女' ORDER BY sage
在查詢過程中可以指定對多列進行排序,其語法格式如下:
ORDER BY 列名1 ASC | DESC, 列名2 ASC | DESC, 列名3 ASC | DESC , ...
(3)查詢學號前四位為2012的學生的學號、姓名和年齡,結果按年齡降序排序,按學號升序排序
查詢語句為:
SELECT sno, sname, sage FROM student
WHERE sno LIKE '2012%' ORDER BY sage DESC, sno ASC
其含義為,查詢結果首先按學生的年齡進行排序,如果年齡相同的話,再按學號從小到大進行排序
注意事項:
(1)并非所有數據類型的列都可以參與排序:數據類型為text, ntext, image的列不能參與排序;
(2)對于排序列中含有空值(什么是空值)的列,當升序(ASC)排序時,其排在最前面;當為降序(DESC)排序時,其排在最后面。
新聞熱點
疑難解答