为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL ORDER BY

标签:
MySQL

Summary: in this tutorial, you will learn how to sort a result set by using MySQL ORDER BY clause.

Introduction to MySQL ORDER BY clause

When you use the SELECT statement to query data from a table, the result set is not sorted in a specific order. To sort the result set, you use the ORDER BY clause. The ORDER BY clause allows you to:

  • Sort a result set by a single column or multiple columns.

  • Sort a result set by different columns in ascending or descending order.

The following illustrates the syntax of the ORDER BY clause:

SELECT col1, col2,... FROM tbl ORDER BY col1 [ASC|DESC], col2 [ASC|DESC],...

The ASC stands for ascending and the DESC stands for descending. By default, the ORDER BY clause sorts the result set in ascending order  if you don’t  specify ASC or DESC explicitly

Let’s practice with some examples of using the ORDER BY clause.

MySQL ORDER BY examples

The following query selects contacts from the customers table and sorts the contacts by last name in ascending order.

SELECT contactLastname,         contactFirstname FROM customers ORDER BY contactLastname;

mysql order by asc

If you want to sort the contact by last name in descending order, you specify the DESC after the contactLastnamecolumn in the ORDER BY clause as the following query:

SELECT contactLastname,         contactFirstname FROM customers ORDER BY contactLastname DESC

mysql order by desc

If you want to sort the contacts by last name in descending order and first name in ascending order, you specify both  DESC and ASC in the corresponding column as follows:

SELECT contactLastname,         contactFirstname FROM customers ORDER BY contactLastname DESC,           contactFirstname ASC;

mysql order by desc asc

In the query above, the ORDER BY clause sorts the result set by  last name in descending order first, and then sorts the sorted result set by first name in ascending order to produce the final result set.

MySQL ORDER BY sort by an expression example

The ORDER BY clause also allows you to sort the result set based on an expression. The following query selects the order line items from the orderdetails table. It calculates the subtotal for each line item and sorts the result set based on the order number and subtotal.

SELECT ordernumber,         quantityOrdered * priceEach  FROM orderdetails ORDER BY ordernumber,           quantityOrdered * priceEach

mysql order by sort by expression

To make the result more readable, you can use a column alias, and sort the result based on the column alias.

SELECT orderNumber,         quantityOrdered * priceEach AS subTotal FROM orderdetails ORDER BY orderNumber,           subTotal;

 

1

 

mysql order by sort by column alias

In the query above, we used subtotal as the column alias for the quantityOrdered * priceEach expression and sorted the result set based on the subtotal alias.

If you use  a function that returns a value whose data type is different from the column’s and sort the result based on the alias, the ORDER BY clause will sort the result set based on the return type of the function, which may not work as expected.

For example, if you use the DATE_FORMAT function to format the date values and sort the result set based on the strings returned by the DATE_FORMAT function, the order is not always correct. For more information, check it out the example in the DATE_FORMAT function tutorial.

MySQL ORDER BY with customer sort order

The ORDER BY clause enables you to define your own custom sort order for the values in a column using the FIELD() function. For example, if you want to sort the orders based on the following status by the following order:

  1. In Process

  2. On Hold

  3. Cancelled

  4. Resolved

  5. Disputed

  6. Shipped

You can use the FIELD() function to map those values to a list of numeric values and use the numbers for sorting; See the following query:

 https://img1.sycdn.imooc.com//5b65847200012c4101520051.jpg


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消