举例:
输入:SELECT * FROM student s ;
输出:
image.png
注释:
上面的例子中,检索出来的并不是按照完全的随机顺序显示的,如果不进行排序操作,数据会以底层表中的顺序显示(最初添加表中的顺序),但是如果中间进行过删除或者修改,顺序会受到Mysql回收存储空间的影响,因此如果不明确排序顺序,则不应该假定检索出的数据有意义。
单个字段排序
输入:select * FROM student s order by name ;
分析:这条语句中指示按照 name 列顺序排序
输出:
按多个列排序
经常需要不止一个列进行数据排序,例如,按照远程姓名,年龄排序,(首先按照姓名排序,然后按照年龄排序)
例:
输入:select * FROM student s order by name,age;
分析:按多个列排序,只要指定列名,列名之间用逗号分开即可,以下例子中,仅在多行具有相同的name时,才会对列 age进行排序
输出:
image.png
指定排序方向
数据排序默认为升序排序,可以通过指定关键字指定排序顺序。
举例:
-
按照年龄以降序排序
输入:select * FROM student s order by age DESC ;
输出:
image.png -
多列排序,先按照姓名降序排序,然后对年龄顺序排序
输入:select * FROM student s order by name DESC,age ;
输出:
image.png -
组合使用,获取一列中数据最小值
输入:select * FROM student s order by age DESC LIMIT 1 ;
分析: age DESC保证行是按照由大到最小检索的,而
LIMIT 1告诉MySQL仅返回一行
输出:
image.png
1,DESC关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序排序,必须
对每个列指定DESC关键字。
2,DESC相反的关键字是ASC,但实际上,ASC没有多大用处,因为升序是默认的(如果既不指定ASC也
不指定DESC,则假定为ASC)
3,ORDER BY子句,必须是SELECT语句中的最后一条子句
引用:
区分大小写和排序顺序 在对文本性的数据进行排序时,A与a相同吗?a位于B之前还是位于Z之后?这些问题不是理论问题,其答案取决于数据库如何设置。在字典(dictionary)排序顺序中,A被视为与a相同,这是MySQL(和大多数数据库管理系统)的默认行为。但是,许多数据库管理员能够在需要时改变这种行为(如果你的数据库包含大量外语字符,可能必须这样做)。这里,关键的问题是,如果确实需要改变这种排序顺序,用简单的ORDER BY子句做不到。你必须请求数据库管理员的帮助
网友评论