MySQL ORDER BY子句
时间:2019-02-04 12:52:24 来源:igfitidea点击:
在本教程中,我们将学习如何使用MySQL ORDER BY子句。 ORDER BY子句用于对结果集中的数据行进行排序。
语法
MySQL中ORDER BY子句的语法为:
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升序排序。
SELECT companyname, city FROM customers WHERE Country = 'UK' ORDER BY city;
找出所有位于UK的客户公司名和所在城市,并按city进行排序。
等同于以下语句:
SELECT companyname, city FROM customers WHERE Country = 'UK' ORDER BY city ASC;
示例-降序排序
如果要按照降序对结果集进行排序,可以在ORDER BY子句中使用DESC属性,如下所示:
SELECT CustomerID,CompanyName, city FROM customers WHERE Country = 'Johnson' ORDER BY city DESC;
将对返回的结果集按照city进行降序排序。
示例-按相对位置排序
在MySQL ORDER BY子句中, 还可以按结果集中字段的相对位置排序,其中结果集中的第一个字段为1,第二个字段为2,依此类推。
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属性。 先对前面的字段进行排序,接着是后面的。
例如:
SELECT supplier_city, supplier_state FROM suppliers WHERE supplier_name = 'Microsoft' ORDER BY supplier_city DESC, supplier_state ASC;
先按照supplier_city列降序排序,然后根据supplier_state进行升序排序。