《SQL必知必会》--排序检索数据

第三课 排序检索数据

排序数据

1
2
3
select column_name
from table_name
order by column123_name;

按照column123_name这一列的数字+字母顺序对输出结果column_name这一列进行排序。

关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出来的数据的顺序有任何意义。

ORDER BY语句若存在,则必须为该命令的最后一个指令。

按多个列排序

1
2
3
select c1_name
from t1_name
order by c1_name, c2_name;

首先按照c1_name的数字字母进行排序,若c1_name列各值唯一,绝不相同,则仅按照c1_name顺序对选择结果进行排序;

当且仅当c1_name列存在相同值时,才会再按照c2_name列的排序方式对c1_name相同值的记录进行排序。

按列位置排序

1
2
3
select c1_name
from t1_name
order by 12;

这一个大概不怎么用了,我在MySQL上操作的时候没有成功,而且,在知乎也没有搜到这一条指令。

而且,我想我也不会再使用这一条命令,因为如若按照书本上来说,这一条命令很奇怪。他首先按照2列进行排序,再按照1列进行排序。

指定排序方向

在DEMS中,当使用ORDER BY指令时,默认检索数据排序方式为升序(ASC),也就是0-9-A-Z(不区分大小写)。

当然,我们也可以使用降序指令,指定排序方向。

1
2
3
select c1_name
from t1_name
order by c1_name DESC, c2_name;

首先按照c1_name列进行降序排序,若有重复值,按照c2_name进行升序排序。

1
2
3
select c1_name
from t1_name
order by c1_name, c2_name DESC;

首先按照c1_name列进行升序排序,若有重复值,按照c2_name进行降序排序。

DESC只作用于直接位于其前的一个列名。