昨天介绍了 MySQL 数据库 UNION 操作符的使用,今天主要讲解下 ORDER BY(排序)语句。
我们知道从 MySQL 表中使用 SELECT 语句来读取数据。如果需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
- MySQL ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。
语法
老规矩,先介绍一下语法。以下是 SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;
参数说明
- column1, column2, … 是你要选择的列的名称,如果使用 * 表示选择所有列。
- table_name 是你要从中查询数据的表的名称。
- ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], … 是用于指定排序顺序的子句。ASC 表示升序(默认),DESC 表示降序。
更多说明
- 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
- 你可以设定多个字段来排序。
- 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
- 你可以添加 WHERE…LIKE 子句来设置条件。
参数介绍完成,接下来通过一些实例来详细介绍下该如何使用。
实例01
-- 2024.01.22 查询登录日志
SELECT * FROM nm_login_log ORDER BY create_date ASC;
-- 解释:单列排序(查询登录日志表中的全部数据,并按“登录时间”升序 ASC 排序)。
实例02
-- 2024.01.22 查询登录日志
SELECT * FROM nm_login_log ORDER BY create_code ASC,create_date DESC;
-- 解释:多列排序(查询登录日志表中的全部数据,并先按“登录账号”升序 ASC 排序,然后在相同“登录账号”中按“登录时间”降序 DESC 排序)。
实例03
-- 2024.01.22 查询登录日志
SELECT * FROM nm_login_log ORDER BY 8 DESC,10 ASC;
-- 解释:使用数字表示列的位置(查询登录日志表中的全部数据,并按第8列(create_code)降序 DESC 排序,然后按第10列(create_date)升序 ASC 排序)。
实例04
-- 2024.01.22 查询价格表
SELECT id,trade_name,price,discount,price * discount AS discounted_price FROM nm_price ORDER BY discounted_price DESC;
-- 解释:使用表达式排序(查询价格表中的“商品名称”和根据“折扣率”计算的折扣后价格,并按折扣后价格降序 DESC 排序)。
实例05
-- 2024.01.22 查询价格表
SELECT id,trade_name,price,discount FROM nm_price ORDER BY price DESC NULLS LAST;
-- 解释:使用 NULLS FIRST 或 NULLS LAST 处理 NULL 值(查询价格表中的“商品名称”和“价格”,并按“价格”降序 DESC 排序,将 NULL 值排在最后)。
ORDER BY 子句是一个强大的工具,可以根据不同的业务需求对查询结果进行排序。在实际应用中,注意选择适当的列和排序顺序,以获得符合期望的排序效果。
以上内容即为 MySQL 数据库使用 ORDER BY 进行排序的简单讲解,下期再见。