MySQL约束、函数和运算符
8 MySQL操作表中数据
8.1 MySQL查询数据表
8.2 MySQL去重
8.3 MySQL设置别名
8.4 MySQL限制查询结果的条数
8.5 MySQL对查询结果排序
8.6 MySQL条件查询
8.7 MySQL使用LIKE模糊查询
8.8 MySQL范围查询
8.9 MySQL空值查询
8.10 MySQL分组查询
8.11 MySQL过滤分组
8.12 MySQL交叉连接
8.13 MySQL内连接
8.14 MySQL外连接
8.15 MySQL子查询
8.16 MySQL子查询注意事项
8.17 MySQL子查询的简单改写优化
8.18 MySQL正则表达式查询
8.19 SQL查询语句先执行SELECT?兄弟你认真的么?
8.20 MySQL插入数据
8.21 MySQL修改数据
8.22 MySQL删除数据
8.23 MySQL清空表记录
8.24 MySQL如何多表关联更新?
8.25 MySQL如何处理无效数据值?
8.26 向MySQL发送一个请求的时候,MySQL到底做了些什么?
8.27 不得不说的SQL注入攻击,别一不留神就被利用了!
MySQL视图、索引 MySQL存储过程和触发器 MySQL事务和字符集 MySQL用户管理 MySQL数据库备份与恢复 MySQL日志 MySQL性能优化
通过条件查询语句可以查询到符合用户需求的数据,但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示。为了使查询结果的顺序满足用户的要求,MySQL 提供了 ORDER BY 关键字来对查询结果进行排序。
在实际应用中经常需要对查询结果进行排序,比如,在网上购物时,可以将商品按照价格进行排序;在医院的挂号系统中,可以按照挂号的先后顺序进行排序等。
ORDER BY 关键字主要用来将查询结果中的数据按照一定的顺序进行排序。其语法格式如下: ORDER BY <字段名> [ASC|DESC]

语法说明如下。 字段名:表示需要排序的字段名称,多个字段时用逗号隔开。 ASC|DESC: ASC 表示字段按升序排序; DESC 表示字段按降序排序。其中 ASC 为默认值。 使用 ORDER BY 关键字应该注意以下几个方面: ORDER BY 关键字后可以跟子查询(关于子查询后面教程会详细讲解,这里了解即可)。 当排序的字段中存在空值时,ORDER BY 会将该空值作为最小值来对待。 ORDER BY 指定多个字段进行排序时,MySQL 会按照字段的顺序从左到右依次进行排序。 单字段排序 下面通过一个具体的实例来说明当 ORDER BY 指定单个字段时,MySQL 如何对查询结果进行排序。
下面查询 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 如何对查询结果进行排序。
查询 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)。
查询 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 关键字。

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。本公众号由 C语言中文网站长 亲自运营,长期更新,坚持原创。

微信扫码关注公众号