MySQL ORDER BY子句


在本教程中,我们将学习如何使用MySQL ORDER BY子句。 ORDER BY子句用于对结果集中的数据行进行排序。

语法

MySQL中ORDER BY子句的语法为:

1
2
3
4
SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];
参数 说明
expressions 希望检索的列(字段)或者表达式。
tables 从中检索数据的数据库表,在FROM子句中必须至少列出一个表。
conditions 可选的。指定返回的记录必须满足的条件。
ASC 可选的。按expression对结果集进行升序排序(默认)。
DESC 可选的。按expression对结果集进行降序排序。

说明

  • 如果ORDER BY子句中没有指定ASC或者DESC修饰符,那么结果将按expression进行升序排序。相当于 ORDER BY expression ASC
  • ORDER BY子句可以用在SELECT语句,SELECT LIMIT语句和DELETE LIMIT语句。

MySQL ORDER BY子句示例

示例-不使用ASC / DESC属性进行排序

当ORDER BY中省略了ASC或DESC修饰符,则默认为ASC升序排序。

1
2
3
4
SELECT companyname, city
FROM customers
WHERE Country = 'UK'
ORDER BY city;

找出所有位于UK的客户公司名和所在城市,并按city进行排序。

等同于以下语句:

1
2
3
4
SELECT companyname, city
FROM customers
WHERE Country = 'UK'
ORDER BY city ASC;

示例-降序排序

如果要按照降序对结果集进行排序,可以在ORDER BY子句中使用DESC属性,如下所示:

1
2
3
4
SELECT CustomerID,CompanyName, city
FROM customers
WHERE Country = 'Johnson'
ORDER BY city DESC;

将对返回的结果集按照city进行降序排序。

示例-按相对位置排序

在MySQL ORDER BY子句中, 还可以按结果集中字段的相对位置排序,其中结果集中的第一个字段为1,第二个字段为2,依此类推。

1
2
3
4
SELECT last_name, first_name, city
FROM contacts
WHERE last_name = 'Johnson'
ORDER BY 3 DESC;

SELECT中的第三个字段是city,所有ORDER BY 3 等同于 ORDER BY city.

示例-同时使用ASC和DESC属性

在对结果集进行排序时,可以在单个SELECT语句中同时使用多个ASC和DESC属性。 先对前面的字段进行排序,接着是后面的。

例如:

1
2
3
4
SELECT supplier_city, supplier_state
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city DESC, supplier_state ASC;

先按照supplier_city列降序排序,然后根据supplier_state进行升序排序。


原文链接:https://codingdict.com/