ORDER BY
子句用于对查询结果进行排序。它允许你根据一个或多个列对结果集进行升序或降序排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。
- ASC:表示按升序排序。
- DESC:表示按降序排序。
1:升序排序(ASC)
语句:
SELECT * FROM customers ORDER BY customer_name ASC;
假设 customers
表数据如下:
customer_id | customer_name | customer_city |
---|---|---|
1 | John Doe | New York |
2 | Jane Smith | Los Angeles |
3 | Alice Brown | Chicago |
4 | Bob Johnson | San Francisco |
返回结果:
customer_id | customer_name | customer_city |
---|---|---|
3 | Alice Brown | Chicago |
4 | Bob Johnson | San Francisco |
1 | John Doe | New York |
2 | Jane Smith | Los Angeles |
2:降序排序(DESC)
语句:
SELECT * FROM products ORDER BY product_price DESC;
假设 products
表数据如下:
product_id | product_name | product_price |
---|---|---|
1 | Apple iPhone 14 | 999 |
2 | Samsung Galaxy S23 | 899 |
3 | Google Pixel 7 | 699 |
4 | OnePlus 11 | 599 |
返回结果:
product_id | product_name | product_price |
---|---|---|
1 | Apple iPhone 14 | 999 |
2 | Samsung Galaxy S23 | 899 |
3 | Google Pixel 7 | 699 |
4 | OnePlus 11 | 599 |
3:多个列排序
排序规则:
- 先按第一个列排序:
ORDER BY
子句中第一个列的排序方式会首先应用于整个结果集。 - 然后按第二个列排序: 如果第一个列的值相同,则会根据第二个列进行排序。
- 依此类推: 如果第二个列的值也相同,则会根据第三个列进行排序,以此类推,直到所有列都比较完毕。
语句:
SELECT * FROM orders ORDER BY order_date ASC, order_id DESC;
假设 orders
表数据如下:
order_id | order_date | customer_id |
---|---|---|
101 | 2023-03-01 | 1 |
102 | 2023-03-01 | 2 |
103 | 2023-03-02 | 3 |
104 | 2023-03-02 | 4 |
返回结果:
order_id | order_date | customer_id |
---|---|---|
102 | 2023-03-01 | 2 |
101 | 2023-03-01 | 1 |
104 | 2023-03-02 | 4 |
103 | 2023-03-02 | 3 |
4:表达式排序
语句:
SELECT * FROM employees ORDER BY LENGTH(employee_name) DESC;
假设 employees
表数据如下:
employee_id | employee_name |
---|---|
1 | John Doe |
2 | Jane Smith |
3 | Peter Jones |
4 | Alice Brown |
返回结果:
employee_id | employee_name |
---|---|
3 | Peter Jones |
2 | Jane Smith |
1 | John Doe |
4 | Alice Brown |
因为 Peter Jones
的名字最长,所以排在第一位;Jane Smith
和 John Doe
的名字长度相同,但 Jane Smith
排在前面,因为 ORDER BY
子句默认使用升序排序,所以字母顺序靠前的排在前面。
求点赞!!! 求点赞!!! 求点赞!!!