MySQL 多列排序

MySQL 基础篇

三范式

MySQL 军规

MySQL 配置

MySQL 用户管理和权限设置

MySQL 常用函数介绍

MySQL 字段类型介绍

MySQL 多列排序

MySQL 行转列 列转行

MySQL NULL 使用带来的坑

MySQL AND 和 OR 联合使用带来的坑

MySQL 触发器的使用

数据准备:

CREATE TABLE `teacher` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

insert into `teacher` (`id`, `name`, `age`) values('1','seven','18');
insert into `teacher` (`id`, `name`, `age`) values('2','qingshan','20');
insert into `teacher` (`id`, `name`, `age`) values('3','zhangsan','33');

比如我们对表中的数据先按照年龄,然后按照姓名排序,怎么写 SQL 呢?

SELECT * FROM teacher ORDER BY age, name;

这里需要注意的是,对于上述例子中的输出,仅在多个行具有相同的 age 值时才对老师按 name 进行排序。如果 age 列中所有的值都是唯一的,则不会按 name 排序。

比如我们需要对表中的数据先按年龄降序,然后按姓名升序排序,怎么写 SQL 呢?

SELECT * FROM teacher ORDER BY age DESC, name;

可以在姓名 name 字段后面加上 ASC(升序) 也可以不加,因为升序是默认的(如果既不指定 ASC 也不指定 DESC ,则假定为 ASC )。

这里需要注意的是,DESC 关键字只应用到直接位于其前面的列名,在上例中,只对 age 列指定 DESC ,对 name 列不指定。因此,age 列以降序排序,而 name 列(在每个价格内)仍然按标准的升序排序。在多个列上降序排序 如果想在多个列上进行降序排序,必须对每个列指定 DESC 关键字。

原文地址:https://www.cnblogs.com/yinjw/p/11767249.html