2 MYSQL中的相关排序检索指令(ORDER BY)

如果我们想对我们的sql语句返回的数据进行一个特定的顺序排序,我们则可以用ORDER BY 子句

ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

-- 按照role_sort 字段进行升序排序

select * from sys_role order by role_sort 

 注意:ORDER BY子句的位置
在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出错。

1. 按照多个列进行排序

我们可能会遇到这种用户表中,我们不仅要根据性别进行排序还需要根据班级进行排序,像这种按照多个列进行排序的,只须指定这些列名,列名之间用逗号分开即可(就像选择多个列时那样)。

select * from sys_role order by data_scope ,role_sort

在进行按照多个列进行排序的时候,仅在多个行具有相同的data_scope 值时才对用户角色按role_sort进行排序。如果data_scope 列中所有的值都是唯一的,则不会按role_sort排序。

2、按照列位置进行排序

除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。

select data_scope ,role_sort , t.* from sys_role t order by 1,2

你会发现,该查询出来的结果跟上面语句查询的结果是一样的,唯一的区别是ORDER BY 子句。

ORDER BY 1,2表示先按data_scope,再按role_sort进行排序。 

注意:当根据不出现在SELECT清单中的列进行排序时,不能采用这项技术。但是,如果有必要,可以混合使用实际列名和相对列位置。

3、指定排序方向(DESC&ASC)

ORDER BY 子句默认的是升序排序 ,即省略了ASC关键字。还可以使用ORDER BY子句进行降序(从Z到A)排序。为了进行降序排序,必须指定DESC关键字。

select * from sys_role sr order by sr.role_sort desc -- 降序排序

如果打算用多个列排序,该怎么办?下面的例子以降序排序data_scope,再加上role_sort:

select * from sys_role order by data_scope desc ,role_sort

DESC关键字只应用到直接位于其前面的列名。在上例中,只对data_scope 列指定DESC,对role_sort列不指定。因此,data_scope 列以降序排序,而role_sort列仍然按标准的升序排序 

小结:

 这一课学习了如何用SELECT语句的ORDER BY子句对检索出的数据进行排序。这个子句必须是SELECT语句中的最后一条子句。根据需要,可以利用它在一个或多个列上对数据进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

→飘渺的尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值