在查询过程中,我们经常需要按照某一列对查询结果进行排序,这在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)排序时,其排在最后面。
新闻热点
疑难解答