开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情
一、前言
大家好,今天文章的内容是:
- 【如何使用SELECT语句的ORDER BY子句对检索出的数据进行排序】
二、内容
2.1、子句
通常来说,一条 SQL 语句是由若干子句共同构成的。有些子句的是必需的,而有一些则是可选的,并且,一个子句是由关键字以及数据组成。比如语句SELECT DISTINCT 列 FROM 表;中,FROM 表就是一个子句。
下面我们来记录如何使用 ORDER BY 关键字来构成排序子句,将查询到的数据按我们指定的顺序返回。
2.2、使用 ORDER BY
(1)按单个列排序
当我们使用检索语句时,如果不排序,返回的数据则通常以底层表中出现的顺序来显示(比如数据最初添加到表中的顺序)。
我们使用 ORDER BY 子句取一个列的名字,据此来对 SELECT 语句检索出的数据进行排序。
语法如下;
SELECT
列名
FROM
表名
ORDER BY
列名;
注意:
一般来说,ORDER BY子句中使用的列名通常是检索的列,但是我们也可以使用非检索的列进行排序数据,这也是合法的。
举个例子,下面语句用于查询学生表中的姓名以及数学成绩,并按照成绩的高低来将查询到的数据进行排序。
SELECT
stu_name, math_score
FROM
tb_students
ORDER BY
math_score;
(2)按多个列排序
按多个列排序的需求也比较多,比如显示员工信息,可能按姓名排序(首先按姓排序,然后在每个姓中再按名排序)。
如果需要按多个列排序,只需指定列名,多个列名之间用逗号分隔开即可。
比如下面语句将检索三个列,并且按照列1和列2对结果进行排序(首先按列1,然后再按列2,在多个列排序中,排序完全按所规定的顺序进行)。
SELECT
列1, 列2, 列3
FROM
表1
ORDER BY
列1, 列2;
(3)指定排序方向
默认的排序顺序是升序(比如从A到Z),如果需要指定降序排序(比如从Z到A),则可以使用关键字DESC。
比如:
SELECT
列名
FROM
表名
ORDER BY
列名 DESC;
如果打算利用多个列排序,则可以这样:
SELECT
列1, 列2, 列3
FROM
表1
ORDER BY
列1 DESC, 列2;
另外需要注意,在上述语句中,DESC 关键字只应用到列1,因此列 1 以降序排序,而 列2 则仍然按照标准的升序排序。也就是说,如果想要在多个列上进行降序排序,必须对每个列指定 DESC 关键字。
备注:
与DESC相反的关键字是ASC,在升序排序时可以指定,但没有多大用处,因为默认下就是升序,即使不指定ASC关键字,也会默认使用。
再举一个例子,下面语句用于找出商品表中最贵物品的值:
SELECT
p_price
FROM
products
ORDER BY
p_price DESC
LIMIT
1;
分析:
ORDER BY p_price DESC保证行是按照由最昂贵到最便宜检索的;LIMIT 1则是告诉MySQL仅返回一行。
三、后话
好了,今天的文章内容就到这里,感谢观看。