在mysql中,可以利用“select”语句和“order by”关键字实现升序查询,语法“select {*|字段列名} from 表名 [where 条件] group by 字段名 asc;”。
本教程操作环境:windows7系统、mysql8版本、dell g3电脑。
在mysql中,可以利用“select”语句和“order by”关键字实现升序查询。
select 语句用于查询数据,order by 关键字主要用来将查询结果中的数据按照一定的顺序进行排序。
基本语法:
select {*|字段列名} from 表名 [where 条件] group by 字段名 [asc|desc];
语法说明如下。
字段名:表示需要排序的字段名称,多个字段时用逗号隔开。
asc|desc:asc表示字段按升序排序;desc表示字段按降序排序。其中asc为默认值。
使用 order by 关键字应该注意以下几个方面:
order by 关键字后可以跟子查询(关于子查询后面教程会详细讲解,这里了解即可)。
当排序的字段中存在空值时,order by 会将该空值作为最小值来对待。
order by 指定多个字段进行排序时,mysql 会按照字段的顺序从左到右依次进行排序。
单字段排序
下面通过一个具体的实例来说明当 order by 指定单个字段时,mysql 如何对查询结果进行排序。
例 1
下面查询 tb_students_info 表的所有记录,并对 height 字段进行排序,sql 语句和运行结果如下。
mysql> select * from tb_students_info order by height;+----+--------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+--------+---------+------+------+--------+------------+| 2 | green | 3 | 23 | f | 158 | 2016-10-22 || 1 | dany | 1 | 25 | f | 160 | 2015-09-10 || 4 | jane | 1 | 22 | f | 162 | 2016-12-20 || 7 | lily | 6 | 22 | f | 165 | 2016-02-26 || 10 | tom | 4 | 23 | m | 165 | 2016-08-05 || 8 | susan | 4 | 23 | f | 170 | 2015-10-01 || 6 | john | 2 | 21 | m | 172 | 2015-11-11 || 5 | jim | 1 | 24 | m | 175 | 2016-01-15 || 9 | thomas | 3 | 22 | m | 178 | 2016-06-07 || 3 | henry | 2 | 23 | m | 185 | 2015-05-31 |+----+--------+---------+------+------+--------+------------+10 rows in set (0.08 sec)
由结果可以看到,mysql 对查询的 height 字段的数据按数值的大小进行了升序排序。
多字段排序
下面通过一个具体的实例来说明当 order by 指定多个字段时,mysql 如何对查询结果进行排序。
例 2
查询 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,sql 语句和运行结果如下。
mysql> select name,height from tb_students_info order by height,name;+--------+--------+| name | height |+--------+--------+| green | 158 || dany | 160 || jane | 162 || lily | 165 || tom | 165 || susan | 170 || john | 172 || jim | 175 || thomas | 178 || henry | 185 |+--------+--------+10 rows in set (0.09 sec)
注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,mysql 将不再对第二个字段进行排序。
默认情况下,查询数据按字母升序进行排序(a~z),但数据的排序并不仅限于此,还可以使用 order by 中的 desc 对查询结果进行降序排序(z~a)。
例 3
查询 tb_students_info 表,先按 height 降序排序,再按 name 升序排序,sql 语句和运行结果如下。
mysql> select name,height from tb_student_info order by height desc,name asc;+--------+--------+| name | height |+--------+--------+| henry | 185 || thomas | 178 || jim | 175 || john | 172 || susan | 170 || lily | 165 || tom | 165 || jane | 162 || dany | 160 || green | 158 |+--------+--------+10 rows in set (0.00 sec)
desc 关键字只对前面的列进行降序排列,在这里只对 height 字段进行降序。因此,height 按降序排序,而 name 仍按升序排序。如果想在多个列上进行降序排序,必须对每个列指定 desc 关键字。
【相关推荐:mysql视频教程】
以上就是mysql怎么实现升序查询的详细内容。