看似很简单是不是?
单列排序,没有任何问题
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