SQL 知识量:22 - 44 - 129
使用查询语句查询数据时,如果没有明确指定数据的排序规则,那么返回的数据将按照数据库设置的默认排序规则进行排序,有可能是按照数据在底层表中出现的顺序显示,也有可能是按照数据最初添加到数据表中的顺序。
例如:查询学生表,按表数据默认排序显示。
select * from student;
查询结果:
+----+--------+-----+--------+ | id | name | age | sex | +----+--------+-----+--------+ | 1 | Susan | 11 | female | | 2 | Jame | 12 | male | | 3 | Bob | 11 | male | | 4 | Robot | 10 | male | | 5 | Jen | 11 | female | | 6 | Toney | 10 | male | | 7 | Jack | 13 | male | | 8 | Alice | 10 | female | | 9 | Bonnie | 11 | male | | 10 | Ella | 12 | female | +----+--------+-----+--------+
以上结果是按照数据最初添加到数据表中的顺序显示的,因为id的排序是从1到10。
需要注意的是:不能依赖数据库的默认排序,因为不确定性,这种排序是没有意义的。应该总是对查询的数据进行指定排序,这需要使用order by子句。
使用order by子句可以按照某个列进行排序。
例如:查询学生表,按照年龄排序。
select * from student order by age;
查询结果:
+----+--------+-----+--------+ | id | name | age | sex | +----+--------+-----+--------+ | 4 | Robot | 10 | male | | 6 | Toney | 10 | male | | 8 | Alice | 10 | female | | 1 | Susan | 11 | female | | 3 | Bob | 11 | male | | 5 | Jen | 11 | female | | 9 | Bonnie | 11 | male | | 2 | Jame | 12 | male | | 10 | Ella | 12 | female | | 7 | Jack | 13 | male | +----+--------+-----+--------+
以上结果按照年龄age进行了排序,但是如果想要在此基础上进一步再对姓名排序,就可以同时按照两个列进行排序,即按多个列排序。
按多个列排序时,只需要依次指明排序的列名即可,多个列名之间使用逗号分隔。
例如:查询学生表,按照年龄和姓名排序。
select * from student order by age,name;
查询结果:
+----+--------+-----+--------+ | id | name | age | sex | +----+--------+-----+--------+ | 8 | Alice | 10 | female | | 4 | Robot | 10 | male | | 6 | Toney | 10 | male | | 3 | Bob | 11 | male | | 9 | Bonnie | 11 | male | | 5 | Jen | 11 | female | | 1 | Susan | 11 | female | | 10 | Ella | 12 | female | | 2 | Jame | 12 | male | | 7 | Jack | 13 | male | +----+--------+-----+--------+
以上查询先按照年龄进行排序,然后对具有相同年龄的行再按照姓名进行排序。
注意:按多个列排序时,指明排序的列的顺序十分重要,数据库会按照先后顺序进行排序,例如:按照A列,B列排序,只有在按照A列进行排序后,多行具有相同(A列)值时,才对这些具有相同值的行进行下一个列(B列)的排序。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6