MySQL ORDER BY 子句

19 Aug 2025 | 5 分钟阅读

MySQL ORDER BY 子句用于按升序或降序对记录进行排序。

语法

参数

expressions: 指定要检索的列。

tables: 指定要从中检索记录的表。FROM 子句中必须至少列出一个表。

WHERE conditions: 这是可选的。它指定了必须满足才能选择记录的条件。

ASC: 这是可选的。它按表达式按升序对结果集进行排序(如果未提供修饰符,则默认为此)。

DESC: 这也是可选的。它按表达式按降序对结果集进行排序。

注意:您可以在 SELECT 语句、SELECT LIMIT 语句和 DELETE LIMIT 语句中使用 MySQL ORDER BY 子句。

MySQL ORDER BY:不使用 ASC/DESC 属性

如果您使用 MySQL ORDER BY 子句而不指定 ASC 和 DESC 修饰符,则默认情况下您将按升序获得结果。

执行以下查询

输出

MySQL order by clause 1

MySQL ORDER BY:使用 ASC 属性

让我们举一个按升序检索数据的示例。

执行以下查询

解释:在上面的查询中,ORDER BY 子句用于按升序排列姓名。在此,SELECT 查询用于检索地址匹配“Lucknow”的数据。

输出:运行此查询后,表的输出如下。

MySQL order by clause 2

MySQL ORDER BY:使用 DESC 属性

解释:在上面的查询中,ORDER BY 子句用于按降序排列官员姓名。在此,SELECT 查询用于检索地址匹配“Lucknow”的数据。

输出:运行此查询后,表的输出如下。

MySQL order by clause 3

MySQL ORDER BY:同时使用 ASC 和 DESC 属性

执行以下查询

解释:在上面的查询中,SELECT 查询用于检索 officer 的姓名、地址信息,其中 officer 的 id 小于 5。在此,ORDER BY 子句用于按降序排列姓名,按升序排列地址。

输出:运行此查询后,表的输出如下。

MySQL order by clause 4

MySQL ORDER BY 和 LIMIT

执行以下查询

解释:在上面的查询中,SELECT 查询用于检索 officer id、officer 姓名、地址信息,其中 officer 的 id 小于 5。在此,ORDER BY 子句用于按升序排列姓名,并使用 LIMIT 函数限制数量。

输出:运行此查询后,表的输出如下。

Officer_idOfficer_name地址
1AjeetMau
2Deepika勒克瑙
3Rahul勒克瑙
4VimalFaizabad

不区分大小写的 MySQL ORDER BY 子句

在 MySQL 中,数据是区分大小写排序的。因此,如果多行具有相同的值但大小写不同,有时会影响结果。为了解决这个问题,我们可以通过将所有数据转换为小写或大写来修改查询。

执行以下查询

解释:在上面的查询中,SELECT 查询用于获取 Officer 表的所有信息。在此,ORDER BY 子句用于按升序排列 officer 姓名,并将姓名转换为大写。

输出:运行此查询后,表的输出如下。

Officer_idOfficer_name地址
1AjeetMau
2Deepika勒克瑙
3Rahul勒克瑙
4VimalFaizabad

使用 MySQL ORDER BY 子句按相对位置排序

在 MySQL 中,我们还可以使用 ORDER BY 子句按相对位置对数据进行排序,其中结果中的第一个属性设置为 1,下一个属性设置为 2,依此类推。

执行以下查询

解释:在上面的查询中,SELECT 查询用于获取 Officer 表的所有信息。在此,ORDER BY 子句用于按升序排列列引用号。

输出:运行此查询后,表的输出如下。

Officer_idOfficer_name地址
4VimalFaizabad
2Deepika勒克瑙
3Rahul勒克瑙
1AjeetMau

使用 RAND() 函数的 ORDER BY 子句

MySQL 中的 ORDER BY RAND() 函数用于从随机显示的表中选择列值。这对于数据行数量较少的表很有用。

解释:在上面的语法中,RAND() 函数为每个表行生成一个随机值。ORDER BY 子句用于按随机值对行进行排序,而 LIMIT 子句用于选择随机排序结果集中的起始行。

执行以下查询

解释:在上面的查询中,SELECT 查询用于从 Officer 表中检索信息。在此,RAND() 函数用于从表中获取随机值,ORDER BY 子句用于按升序排列数据。

输出:运行此查询后,表的输出如下。

Officer_idOfficer_name地址
4VimalFaizabad
2Deepika勒克瑙
1AjeetMau
3Rahul勒克瑙

关于 MySQL ORDER BY 子句的常见问题

1. MySQL ORDER BY 子句中使用的一些关键点是什么?

答案:以下是在 MySQL select 语句中使用 order by 子句的一些关键点。

  • 与 ORDER BY 子句中的 LIMIT 结合使用,以限制返回的行数并提高性能。
  • NULL 值在升序排序时首先出现,在降序排序时最后出现。

2. 如何使用 MYSQL ORDER by 子句执行算术运算符?

答案:在 MYSQL 中,order by 子句也可以使用算术运算符生成。在这种情况下,数据将按照算术运算结果的顺序进行排序。

以 Teacher 表为例,使用 order by 子句执行算术运算符

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA5000
2HarshitaMCA15000
3拉曼 (Raman)Mtech25000
4RubyBCA5000
5SumanMCA12000
6SumanMCA15000

执行以下查询

输出:运行此查询后,表的输出如下。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA5000
2HarshitaMCA30000
3拉曼 (Raman)Mtech75000
4RubyBCA20000
5SumanMCA60000
6SumanMCA90000

3. 列出在 MySQL ORDER by 子句中使用随机函数的缺点?

答案:当在大表上使用时,它会减慢执行速度,因为 MySQL 需要对整个表进行排序才能找到随机值,这非常耗时。

4. 列出在 MySQL 中使用 ORDER BY 子句的一些好处?

答案:以下是在 MySQL 中使用 ORDER By 子句的一些好处列表。

  • 它有助于按特定顺序对查询结果进行排序。
  • 它有助于组织数据以进行分析和生成报告。