排序
在项目开发时,为了使查询的数据结果满足用户的要求,通常会对查询出的数据进行上升或下降的排序。
MySQL 提供了两种排序的方式,分别为单字段排序和多字段排序。
单字段排序:指的是查询时仅按照一个指定字段进行升序或降序排序。
SELECT *|{字段列表} FROM 数据表名
ORDER BY 字段名 [ASC | DESC];
ASC 表示升序,DESC 表示降序。
ORDER BY 默认值为 ASC。
多字段排序:指的是查询时按照指定的多个字段进行升序或降序排序。
SELECT *|{字段列表} FROM 数据表名
ORDER BY 字段名 1 [ASC | DESC] [, 字段名 2 [ASC | DESC]]…;
多字段排序首先按照字段名 1 进行排序,当字段 1 的值相同时,再按照字段 2 进行排序,依次类推。
数据表的字符集是 utf8,当排序的字段为中文时,默认不会按照中文拼音的顺序排序。
在不改变数据表结构的情况下,可以使用“CONVERT(字段名 USING gbk)”函数强制让指定的字段按中文排序。
在按照指定字段进行升序排列时,如果某条记录的字段值为 NULL,则系统会将 NULL 看作是最小的值,从而将其显示在查询结果中的第一条记录的位置。
限量
对于一次性查询出的大量记录,不仅不便于阅读查看,还会浪费系统效率。
MySQL 中提供了一个关键字 LIMIT,可以限定记录的数量,也可以指定查询从哪一条记录开始(通常用于分页)。
SELECT [select 选项] 字段列表 FROM 数据表名
[WHERE 条件表达式] [ORDER BY 字段 ASC|DESC]
LIMIT [OFFSET,] 记录数;
记录数:表示限定获取的最大记录数量。仅含此参数时,表示从第 1 条记录开始获取。
OFFSET:表示偏移量,用于设置从哪条记录开始,默认第 1 条记录的偏移量值为 0,第 2 条记录的偏移量值为 1,依次类推。
限制记录数:查询 sh_goods 表中价格最贵的商品
mysql> SELECT id, name, price FROM sh_goods
-> ORDER BY price DESC LIMIT 1;
+----+------------+---------+
| id | name | price |
+----+------------+---------+
| 4 | | 5999.00 |
+----+------------+---------+
1 row in set (0.00 sec)
获取指定区间的记录数:从第 1 条记录开始的 5 条商品记录
mysql> SELECT id, name, price FROM sh_goods LIMIT 0, 5;
+----+------------+---------+
| id | name | price |
+----+------------+---------+
| 1 | | 0.50 |
| 2 | | 15.00 |
| 3 | | 1.00 |
| 4 | | 5999.00 |
| 5 | | 1999.00 |
+----+------------+---------+
5 rows in set (0.00 sec)
在 MySQL 中除了对查询记录进行排序和限量外,对数据表中记录的更新与删除操作也可以进行排序和限量。
版权声明: 本文为 InfoQ 作者【在即】的原创文章。
原文链接:【http://xie.infoq.cn/article/308ec546266ea5feca282e3d5】。文章转载请联系作者。
评论