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 如何对查询结果进行排序。例 1
下面查询 tb_students_info 表的所有记录,并对 height 字段进行排序,SQL 语句和运行结果如下。
由结果可以看到,MySQL 对查询的 height 字段的数据按数值的大小进行了升序排序。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)
多字段排序
下面通过一个具体的实例来说明当 ORDER BY 指定多个字段时,MySQL 如何对查询结果进行排序。例 2
查询 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,SQL 语句和运行结果如下。
注意:在对多个字段进行排序时,排序的个字段必须有相同的值,才会对第二个字段进行排序。如果个字段数据中所有的值都是的,MySQL 将不再对第二个字段进行排序。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)
默认情况下,查询数据按字母升序进行排序(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 关键字。
- 随机文章
- 中国 马尔代夫 地点(中国游客最爱的度假胜地马尔代夫,你想去哪座岛屿?)
- 鸡肉出口马尔代夫(马尔代夫成为中国鸡肉重要出口市场)
- 临沂人的马尔代夫(临沂市民选择马尔代夫作为旅游目的地)
- 广州马尔代夫房子(广州豪华度假房:仿佛身处马尔代夫!)
- 墨尔本小马尔代夫(墨尔本市中心惊现小马尔代夫风情之地)
- 安嘎嘎岛马尔代夫(安嘎嘎岛:在马尔代夫度假的绝美岛屿)
- 广西钦州马尔代夫(广西钦州打造仿马尔代夫旅游度假胜地)
- 日本超模马尔代夫(日本超模在马尔代夫拍摄照片成为话题)
- 时间过客马尔代夫(时间荏苒,再次相逢——马尔代夫之旅)
- 移动 马尔代夫 流量(探秘马尔代夫:发现这个度假胜地的最佳流量攻略)
- 杨晨受伤马尔代夫(杨晨在马尔代夫受伤,疑因潜水事故。)
- 婚礼旅行马尔代夫(浪漫蜜月之旅:体验马尔代夫无尽美景)
- 情侣马尔代夫旅行(浪漫之旅:情侣在马尔代夫的梦幻之旅)
- 模仿马尔代夫拍照(学会这个技巧,旅行拍照变得轻松简单)
- 抵达马尔代夫图片(壮丽的马尔代夫:探索美景与海洋生物)
- 日本马尔代夫机票(日本前往马尔代夫的机票现已开启预订)
- 局座解说马尔代夫(局座深度解读马尔代夫,精彩不容错过)
- 扮演马尔代夫的人(探索马尔代夫:水幕与白沙的完美融合)
- 常村 马尔代夫(常村:一个私人定制的马尔代夫体验)
- 狒狒马尔代夫杀手(马尔代夫狒狒惊现“杀手”,备受关注)
- 温婉马尔代夫视频(美丽马尔代夫:一段温婉而美丽的旅程)
- 湛江马尔代夫旅游(湛江出发,享受马尔代夫海岛度假之旅)
- 泰国马尔代夫男模(泰国男模在马尔代夫拍摄照片走红网络)
- 宜昌 马尔代夫(宜昌市民走进仿若马尔代夫的云水谣)
- 徐州马尔代夫在哪(徐州哪里有类似马尔代夫的度假胜地?)
- 努库 马尔代夫(马尔代夫度假胜地——努库岛)
- 自制马尔代夫小屋(自制马尔代夫风情小屋,浪漫度假胜地)
- 咸宁 马尔代夫(咸宁男子在马尔代夫逃过海啸 图片走红)
- 重庆马尔代夫打渔(重庆钓手在马尔代夫海域发打渔大作战)
- 河北马尔代夫海滩(河北打造的马尔代夫海滩受到游客热捧)
