MySQL教程 MySQL教程MySQL 连接MySQL 查看数据库MySQL 创建数据库MySQL 修改数据库MySQL 删除数据库MySQL 选择数据库MySQL 数据类型MySQL存储引擎MySQL 数据表的增删改查MySQL 表数据增删改查操作MySQL 条件子句MySQL 清空表记录MySQL 模糊查询MySQL 处理重复数据MySQL 别名MySQL 限制查询结果数量Mysql 查询结果排序MySQL 范围查询MySQL 空值查询MySQL 查询结果合拼MySQL 分组MySQL 筛选分组MySQL 表连接MySQL NULL值处理MySQL 子查询MySQL 正则表达式MySQL 视图MySQL 索引MySQL安装 MySQL Windows版下载教程MySQL windows系统安装教程MySQL windows系统简单的安装教程MySQL Linux系统安装教程MySQL Linux系统下载教程MySQL Linux系统简单的安装教程配置MySQL环境变量

Mysql 查询结果排序

MySQL的ORDER BY语句是用于对查询结果进行排序的关键字。它可以根据指定的列对查询结果进行升序或降序排序。下面是关于MySQL数据库ORDER BY语句的详细介绍、语法和案例,以及一些在使用时需要注意的事项。

一、ORDER BY语句的语法

ORDER BY语句的基本语法如下:

SELECT <列名1>,...<列名n> FROM <表名>
ORDER BY <列名1>[ASC|DESC],...<列名n>[ASC|DESC]

语法说明:<>是中文解释,逗号','代表分隔号,[ ]中的内容是可选的。

其中,[ASC|DESC]:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC为默认值。

排序的列:在ORDER BY子句中列出的列名,可以多个列同时排序。

排序方式:在每个列名后面可以加上ASC或DESC关键字,表示升序或降序排序。默认为升序排序(ASC)。

二、ORDER BY案例

假设我们有一个名为employees的表格,包含以下列:employee_id、name、salary、department和position。

获取案例新建表格和插入数据语句

新建表格语句

我们将创建一个名为sorted_employees的表格,用于存储按照薪水降序排序的员工信息,该表格包含employee_id、name、salary、department和position列:

CREATE TABLE sorted_employees (
  employee_id INT,
  name VARCHAR(50),
  salary DECIMAL(8, 2),
  department VARCHAR(50),
  position VARCHAR(50)
);

插入数据

我们先插入6条员工数据到sorted_employees 表中,假设这些员工的id分别为1、2、3、4、5和6。以下是这些员工的姓名、薪水、部门和职位:

INSERT INTO sorted_employees (employee_id, name, salary, department, position) VALUES
(1, 'John', 5000, 'Sales', 'Manager'),
(2, 'Sarah', 4500, 'Marketing', 'Specialist'),
(3, 'David', 4000, 'HR', 'Specialist'),
(4, 'David', 4600, 'HR', 'Assistant'),
(5, 'Emily', 4800, 'Finance', 'Analyst'),
(6, 'James', 5500, 'Sales', 'Sales Representative');


数据处理前

执行SELECT查询,显示处理前的数据:

SELECT * FROM sorted_employees;

输出结果如下:

mysql> SELECT * FROM sorted_employees;
+-------------+-------+---------+------------+----------------------+
| employee_id | name  | salary  | department | position             |
+-------------+-------+---------+------------+----------------------+
|           1 | John  | 5000.00 | Sales      | Manager              |
|           2 | Sarah | 4500.00 | Marketing  | Specialist           |
|           3 | David | 4000.00 | HR         | Specialist           |
|           4 | David | 4600.00 | HR         | Assistant            |
|           5 | Emily | 4800.00 | Finance    | Analyst              |
|           6 | James | 5500.00 | Sales      | Sales Representative |
+-------------+-------+---------+------------+----------------------+
6 rows in set (0.01 sec)

数据处理后

使用ORDER BY语句按照薪水降序排序,并将结果插入到sorted_employees表中:

SELECT * FROM sorted_employees ORDER BY salary DESC;

执行SELECT查询,显示处理后的数据:

mysql> SELECT * FROM sorted_employees ORDER BY department DESC;
+-------------+-------+---------+------------+----------------------+
| employee_id | name  | salary  | department | position             |
+-------------+-------+---------+------------+----------------------+
|           1 | John  | 5000.00 | Sales      | Manager              |
|           6 | James | 5500.00 | Sales      | Sales Representative |
|           2 | Sarah | 4500.00 | Marketing  | Specialist           |
|           3 | David | 4000.00 | HR         | Specialist           |
|           4 | David | 4600.00 | HR         | Assistant            |
|           5 | Emily | 4800.00 | Finance    | Analyst              |
+-------------+-------+---------+------------+----------------------+
6 rows in set (0.00 sec)

按默认排序:

查询orders表中的订单信息,按照order_date列升序排序:

SELECT * FROM orders ORDER BY order_date;

按多个列排序:

查询employees表中的员工信息,按照last_name列升序排序,若last_name相同则按照first_name列降序排序:

SELECT * FROM employees
ORDER BY last_name ASC, first_name DESC;

按函数结果排序:

查询employees表中的员工信息,按照LENGTH(last_name)列升序排序:

SELECT * FROM employees
ORDER BY LENGTH(last_name) ASC;

三、注意事项