TSL语言基础 > SQL基础到TS-SQL > TS-SQL入门 > select查询语句

Order By对返回的结果集进行排序    

  •   假如我们除了需要查询出数据,并且还要对查询的结果的英语成绩从小到大进行排序,我们没办法再用简单的几行程序直接写出来了。因为排序牵涉到排序的算法,我们可能会封装一个排序的算法,假定叫SortFunction,我们用最简单的冒泡排序为例:
    Function SortFunction(Arr,SortField);
    Begin
    For i:=0 to length(Arr)-1 do
    For j:=I to length(Arr)-1 do
    Begin
    If Arr[i][SortField]>Arr[j][SortField] then
    Begin
       swap:=Arr[i];
       Arr[i]:=Arr[j];
       Arr[j]:=swap;
    End;
    End;
    End;
      那么在对结果B我们可以使用SortFunction(B,"英语成绩");从我们实现查询到排序,总共使用了10好几条语句。
      我们再看下SQL的写法:
      B:=Select * from EnglishScore where ["英语成绩"]>85 order by ["英语成绩"] end;
      也就是说,SQL允许在where子句之后(或者省略where子句返回所有),可以带order by 排序的表达式。order by默认是从小到大排序的,事实上,order by允许对多个字段同时进行排序,并且支持从大到小排序。我们如果要对ScoreList的语文成绩正序排序,然后对英语成绩和语文成绩的比值进行逆序排列,我们可以如下写:
      B:=select * from ScoreList Order by ["语文成绩"] asc,["英语成绩"]/["语文成绩"] desc end;
      也就是说order by 后的排序表达式之后允许跟asc或者desc来描述排序的方向,缺省为正序(asc可以省略),而desc则代表逆序,并且order by之后支持多个排序,多个排序表达式和排序方向之间使用逗号进行分割。