数据准备:

    1. CREATE TABLE `teacher` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT,
    3. `name` varchar(32) NOT NULL,
    4. `age` int(11) NOT NULL,
    5. PRIMARY KEY (`id`)
    6. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
    7. insert into `teacher` (`id`, `name`, `age`) values('1','seven','18');
    8. insert into `teacher` (`id`, `name`, `age`) values('2','qingshan','20');
    9. insert into `teacher` (`id`, `name`, `age`) values('3','zhangsan','33');

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

    1. SELECT * FROM teacher ORDER BY age, name;

    image.png

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

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

    1. SELECT * FROM teacher ORDER BY age DESC, name;

    image.png

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

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

    作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/krfgud 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。