通过条件查询语句可以查询到符合用户需求的数据,但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示。为了使查询结果的顺序满足用户的要求,MySql 提供了关键字来对查询结果进行排序。
在实际应用中经常需要对查询结果进行排序,比如,在网上购物时,可以将商品按照价格进行排序;在医院的挂号系统中,可以按照挂号的先后顺序进行排序等。
ORDER BY 关键字主要用来将查询结果中的数据按照一定的顺序进行排序。其语法格式如下:
ORDER BY <字段名> [ASC|DESC]
语法说明如下。
使用 ORDER BY 关键字应该注意以下几个方面:
单字段排序
下面通过一个具体的实例来说明当 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 关键字。
在SQL的Select命令中用什么短语对查询的结果进行排序
select*fromtestorderbyage
mysql 如何查询某表 第一个字段内容长度
不对。 因为没有排序的情况下,LIMIT 1,并不能保证取的是第一条记录。 步骤如下:1、创建测试表;create table test_aaa(id int, bbb int , ccc int);2、插入测试数据;insert into test_aaa values(1, 111, 222);insert into test_aaa values(3, 333, 444);insert into test_aaa values(2, 555, 666);3、查询表中数据;可以看下id并没有排序;select * from test_aaa;4、重新排序后,再取第一条记录;并去bbb字段的长度;select id, length(bbb) lbfrom (select * from test_aaa order by id) tlimit 1;
SQL数据库中查询语句Order By和Group By有什么区别
group by是分组的,比如你要查询一个班级的学生,各省分别有多少人。 (表结构是学生表,有学号,姓名,所在省,备注等。 ) 就应该用到group by了,如: SELECT 所在省,COUNT(*) AS 学生数 FROM 学生 GROUP BY 所在省 Order by是用来排序的。 如,你想要把上例中查得的结果按人数从大到小,或从小到大排列,可以加这么一句, ORDER BY 学生人数 (DESC或ASC); 好了,就这么个用法。 后面括号的关键字,指明了从大到小,还是从小到大,只能写一个,并且不要括号。
发表评论