SQL Server中order by的使用,我们来填坑

时间:2023-03-09 01:52:11
SQL Server中order by的使用,我们来填坑

看似很简单是不是?

单列排序,没有任何问题

select * from tableA
where age>1
order by age /*后面可以跟上ASC、DESC,默认是ASC升序排列*/

多列排序中的坑

如果是多个列排序呢?注意这里的age有很多一样的

select * from tableA
where id>1
order by age, name desc

上面的写法是达不到预想的效果的,原因就在于,如果指定了多个排序列,而且还指定了降序排列,那么就需要为每一个列指定降序排列,上面的写法desc将只作用于name字段上,而age字段缺省的情况下依然是ASC排序,知道了这个出现诡异的排序结果也就很好解释了。

正确的写法

select * from tableA
where id>1
order by age desc, name desc