MySQL database - MySQL ORDER BY: sort query results

The data that meets the user's needs can be queried through the conditional query statement, but the queried data is generally displayed in the order in which the data is initially added to the table. In order to make the order of the query results meet the user's requirements, MySQL provides the ORDER BY keyword to sort the query results.

In practical applications, it is often necessary to sort the query results. For example, when shopping online, the products can be sorted according to the price; in the registration system of the hospital, the order of registration can be sorted.

The ORDER BY keyword is mainly used to sort the data in the query results in a certain order. Its syntax format is as follows:

ORDER BY <field name> [ASC|DESC]

The syntax is explained as follows:

  • Field name: Indicates the name of the field to be sorted, and separates multiple fields with commas.
  • ASC|DESC:ASC indicates that the fields are sorted in ascending order; DESCindicates that the fields are sorted in descending order. where ASCis the default value.

The following aspects should be paid attention to when using the ORDER BY keyword:

  • The ORDER BY keyword can be followed by subqueries.
  • When there is a null value in the sorted field, ORDER BY will treat the null value as the minimum value.
  • When ORDER BY specifies multiple fields to sort, MySQL will sort from left to right according to the order of the fields.

Single field sorting

The following uses a specific example to illustrate how MySQL sorts query results when ORDER BY specifies a single field.

Example 1

Next, query all the records of the tb_students_info table and sort the height field. The SQL statement and running results are as follows:

mysql> SELECT * FROM tb_students_info ORDER BY height;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.08 sec)

As can be seen from the results, MySQL sorts the data in the height field of the query in ascending order according to the size of the value.

Multi-field sorting

The following uses a specific example to illustrate how MySQL sorts query results when ORDER BY specifies multiple fields.

Example 2

Query the name and height fields in the tb_students_info table, sort by height first, and then by name. The SQL statement and running results are as follows:

mysql> SELECT name,height FROM tb_students_info ORDER BY height,name;
+--------+--------+
| name   | height |
+--------+--------+
| Green  |    158 |
| Dany   |    160 |
| Jane   |    162 |
| Lily   |    165 |
| Tom    |    165 |
| Susan  |    170 |
| John   |    172 |
| Jim    |    175 |
| Thomas |    178 |
| Henry  |    185 |
+--------+--------+
10 rows in set (0.09 sec)

Note: When sorting multiple fields, the first field to be sorted must have the same value before the second field will be sorted. If all values ​​in the first field data are unique, MySQL will no longer sort the second field.

By default, query data is sorted in ascending alphabetical order (A~Z), but the sorting of data is not limited to this, you can also use DESC in ORDER BY to sort query results in descending order (Z~A).

Example 3

Query the tb_students_info table, first sort by height in descending order, and then by name in ascending order, the SQL statement and running results are as follows:

mysql> SELECT name,height FROM tb_student_info ORDER BY height DESC,name ASC;
+--------+--------+
| name   | height |
+--------+--------+
| Henry  |    185 |
| Thomas |    178 |
| Jim    |    175 |
| John   |    172 |
| Susan  |    170 |
| Lily   |    165 |
| Tom    |    165 |
| Jane   |    162 |
| Dany   |    160 |
| Green  |    158 |
+--------+--------+
10 rows in set (0.00 sec)

The DESC keyword only performs descending order on the previous column, here only the height field is ordered in descending order. So height is sorted in descending order, while name is still sorted in ascending order. If you want to sort descending on multiple columns, you must specify the DESC keyword for each column.

Dark horse programmer MySQL database entry to proficiency, from mysql installation to mysql advanced, mysql optimization all covered

Guess you like

Origin blog.csdn.net/Itmastergo/article/details/130336546