按以下方式排序 MySQL:DESC 和 ASC 查询示例
排序结果
使用 SELECT 命令,结果将按照记录添加到数据库的顺序返回。这是默认排序顺序。在本节中,我们将了解如何对查询结果进行排序。排序只是以指定的方式重新排列查询结果。排序可以对单个列或多个列执行。它可以对数字、字符串以及日期数据类型进行。
ORDER BY 是什么 MySQL?
MySQL ORDER BY 与 SELECT 查询一起使用,按顺序对数据进行排序。 MySQL ORDER BY 子句用于按升序或降序对查询结果集进行排序。
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
点击这里
- “选择语句......“ 是常规选择查询
- “ | ” 代表替代方案
- “[WHERE 条件 | GROUP BY `field_name(s)` HAVING 条件” 是用于过滤查询结果集的可选条件。
- “按顺序” 对查询结果集进行排序
- “[ASC | DESC]” 是用于按升序或降序对结果集进行排序的关键字。注意 ASC 用作默认值。
- 从表名称中选择 {字段名称 | *} 是包含要从中获取结果集的字段和表的语句。
- [WHERE 条件] 是可选的,但可以用来根据给定的条件过滤数据。
- ORDER BY fieldname(s) 是必填项,是要执行排序的字段。 MySQL DESC 关键字指定按降序排序。
- [限制] 是可选的,但可以用来限制查询结果集返回的结果数。
什么是 DESC 和 ASC 关键字?
用于对查询结果按从上到下的顺序进行排序。 | 用于按从下到上的顺序对查询结果进行排序 |
处理日期数据类型时,最早的日期显示在列表顶部。 | 。处理日期类型时,最新日期显示在列表顶部。 |
使用数字数据类型时,最低值显示在列表顶部。 | 使用数字数据类型时,最高值显示在查询结果集的顶部。 |
当使用字符串数据类型时,查询结果集按从字母 A 开始到字母 Z 的顺序排序。 | 使用字符串数据类型时,查询结果集按从字母 Z 开头到字母 A 的顺序排序。 |
SQL DESC 和 ASC 关键字都与 SELECT 语句一起使用,并且 MySQL ORDER BY 子句。
DESC 和 ASC 语法
SQL DESC 排序关键字具有以下基本语法。
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
点击这里
例子:
现在让我们看一个实际的例子——
SELECT * FROM members;
在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台为我们提供了以下显示的结果。
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
假设营销部门希望按生日降序排列会员详细信息。这将有助于他们及时发送生日祝福。我们可以通过执行如下查询来获取上述列表 -
SELECT * FROM members ORDER BY date_of_birth DESC;
在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台为我们提供了以下显示的结果。
按升序排列的相同查询
从成员中选择 * 按出生日期 ASC 排序
注意:NULL 值表示没有值(不是零或空字符串)。观察它们的排序方式。
More examples
让我们考虑以下列出所有成员记录的 SQL 排序脚本。
SELECT * FROM `members`;
执行上述脚本将得到如下所示的结果。
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
假设我们想要获取一个使用性别字段对查询结果集进行排序的列表,我们将使用下面显示的脚本。
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
“女性”成员首先显示,然后是“男性”成员,这是因为当使用 ORDER BY DESC 子句时没有指定 ASC 或 MySQL DESC 关键字,默认情况下, MySQL 已按升序对查询结果集进行排序。
现在让我们看一个例子 使用两列排序;第一个是 排序 in 升序 默认情况下,第二列是 排序 in 降序。
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台给出以下结果。
性别列默认按升序排序,而出生日期列则明确按降序排序
为什么我们可以使用 DESC 和 ASC?
假设我们想为视频库成员打印付款历史记录以帮助回答前台的查询,从最近的付款到较早的付款按降序顺序打印付款不是更合乎逻辑吗?
SQL 中的 DESC 关键字在这种情况下非常有用。我们可以编写一个查询,使用付款日期按降序对列表进行排序。
假设营销部门想要获取按类别列出的电影列表,以便会员在租借电影时决定库中有哪些电影可供选择,那么按电影类别名称和标题升序排序以便会员可以快速从列表中查找信息不是更合乎逻辑吗?
在这种情况下,ASC 关键字非常有用;我们可以按类别名称和电影标题升序排列电影列表。
总结
- 对查询结果进行排序是按升序或降序重新排列查询结果集返回的行。
- SQL中的关键字DESC,用于对查询结果集进行降序排序。
- ASC 关键字用于对查询结果集按升序排序。
- DESC 和 ASC 都与 ORDER BY 关键字一起使用。它们还可以与其他关键字结合使用,例如 WHERE 子句 和 LIMIT
- 当没有明确指定时,ORDER BY 的默认值为 ASC。