sql语句排序子句order by用法实例

发布时间:2019-11-28编辑:脚本学堂
本文介绍了sql语句中用于排序的子句order by的用法,在查询过程中,需要按照某一列对查询结果进行排序,在SQL语言中使用ORDER BY子句来实现。

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

在查询过程中可以指定对多列进行排序,其语法格式:(www.jb200.com 脚本学堂)
 

复制代码 代码示例:
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)排序时,其排在最后面。