使用SQL的ORDER BY子句
1802字,阅读需时7分钟
来自专栏
课程/专栏

在SQL查询结果集中,记录的顺序是按它们在表中的顺序进行排列的,可以使用ORDER BY子句对查询结果按照给定的字段值重新进行排序。排序支持升序和降序,升序按照从低到高或者从小到大,降序按照从高到低或者从大到小。在ORDER BY子句后面添加关键字ASC可以让返回的记录按升序排序,添加关键字DESC可以让返回的记录按降序排序,如果省略ASC(升序)或DESC(降序),系统则默认为升序。需要注意的是关键字ASC(升序)或DESC(降序)只能单独使用,不能同时使用。

ORDER BY子句后面是待排序的字段。若字段的值是数值,进行ASC(升序)排序时,记录按照字段的值从小到大进行排序。进行DESC(降序)排序时,记录按照字段的值从大到小进行排序;若字段的值是字符串时,排序会按照字典顺序进行。

例1:查询mooc数据库的course表,查询返回的结果集按照价格字段升序排序。

例1要求按照价格字段升序排序,可以使用ORDER BY子句对查询返回的结果集排序,如果没有WHERE子句,ORDER BY子句可以直接添加在FROM子句后面。在查询窗口输入下面的SQL语句。

select * FROM course ORDER BY price ASC

在上面的SQL语句中将返回按照price字段值升序排序的课程记录。SQL查询结果如下图所示。

image.png                                             

 

例2:查询mooc数据库的course表,查询返回的结果集按照价格字段降序排序。

查询内容同例1相同,排序要求按照价格字段的值降序排序。在查询窗口输入下面的SQL语句。

select * FROM course ORDER BY price DESC

在上面的SQL语句中将返回按照price字段值降序排序的课程记录。SQL查询结果如下图所示。

 image.png

例3:查询mooc数据库的course表,查询返回的结果集按照课程名称排序。

例3要求按照课程名称字段进行排序,课程名称字段的值是字符串,排序规则是字典顺序。在查询窗口输入下面的SQL语句。

select * FROM course ORDER BY name

在上面的SQL语句中,ORDER BY子句name字段后面没有添加排序关键字,MySQL默认为升序排序。SQL查询结果如下图所示。

 image.png

例4:查询mooc数据库的course表,查询返回的结果集按照课程名称降序排序。

查询内容同例3相同,排序要求按照课程名称字段的值降序排序。在查询窗口输入下面的SQL语句。

select * FROM course ORDER BY name DESC

在上面的SQL语句中,在ORDER BY子句name字段后面添加DESC关键字,返回结果集将以字典顺序降序排序。SQL查询结果如下图所示。

 image.png

 

例5:查询mooc数据库的course表,查询课程类别为机器学习的课程记录,并按照课程价格降序排序。

查询内容要求类别为机器学习的课程并按照价格降序排序。在查询窗口输入下面的SQL语句。

select * FROM course WHERE category = "机器学习" ORDER BY price DESC

在上面的SQL语句中,首先查询出类别为“机器学习”的课程记录,然后再按照价格字段降序排序。SQL查询结果如下图所示。

 image.png

例6:查询mooc数据库的course表,查询所有课程记录,并按照课程名称、价格字段升序排序。

查询内容要求按课程名称和价格两个字段值进行排序,对于多个字段排序,MySQL会先对第一个字段进行排序,然后在排序的基础上再对后面的字段进行排序,依次类推,字段与字段之间用英文逗号分隔。在查询窗口输入下面的SQL语句。

select * FROM course ORDER BY name,price

在上面的SQL语句中,SQL会先按照name排序,然后再按照price排序,前提是先要满足name排序。SQL查询结果如下图所示。

image.png

我要评论
全部评论