排序用关键字"order by",起后跟字段列表。排序分升序(ascending)和降序 (descending),默认是升序,在字段列表的各个字段后面跟关键字DESC,则该字 段将按照降序排列。
字段后面不指定时为升序。
SQL>select
DEPID,STDNAME 2from
STUFF 3order by
DEPID; DE STDNAME -- -------- 10 孙荃 10 鲁素 10 花牧岚 20 张妃 20 诸葛靓 20 周语 20 江叁讲 20 穆归营 30 关玉 30 邓笑评 30 李斯硼 30 曹草 30 刘蓓 已选择13行。
字段后面指定'DESC'时为降序。
SQL>select
DEPID,STDNAME 2from
STUFF 3order by
DEPIDdesc
; DE STDNAME -- -------- 30 关玉 30 刘蓓 30 李斯硼 30 曹草 30 邓笑评 20 张妃 20 穆归营 20 诸葛靓 20 江叁讲 20 周语 10 孙荃 10 鲁素 10 花牧岚 已选择13行。
下例指定按照部门的升序、工资的降序排列,注意:是在部门排序的基础之上对 工资进行再排序。"order by"后面的字段列表中的先后位置是很重要的。
1select
DEPID,STDNAME,SALAR 2from
STUFF 3*order by
DEPID,SALARYdesc
SQL> / DE STDNAME SALARY -- -------- ---------- 10 鲁素 9000 10 孙荃 3450 10 花牧岚 2300 20 周语 3000 20 穆归营 3000 20 江叁讲 2975 20 诸葛靓 2100 20 张妃 1800 30 邓笑评 3850 30 关玉 2600 30 曹草 2500 30 刘蓓 2250 30 李斯硼 2250 已选择13行。
字段序号指用"select"后面的字段列表中的顺序号,来代替"order by"后面的字段 列表。
1select
DEPID,STDNAME,SALAR 2from
STUFF 3*order by
1,3desc
SQL> / DE STDNAME SALARY -- -------- ---------- 10 鲁素 9000 10 孙荃 3450 10 花牧岚 2300 20 周语 3000 20 穆归营 3000 20 江叁讲 2975 20 诸葛靓 2100 20 张妃 1800 30 邓笑评 3850 30 关玉 2600 30 曹草 2500 30 刘蓓 2250 30 李斯硼 2250 已选择13行。
在"order by"后面的字段列表中的字段不一定是"select"字段列表存在的,事实上, "order by"后面的字段列表中的字段同样可以是表达式,只要这个表达式如果放在"select" 字段列表中不出错,这样的表达式也是合法的。
1select
DEPID,STDNAME,SALARY 2from
STUFF 3*order by
DEPID,YMDdesc
SQL> / DE STDNAME SALARY -- -------- ---------- 10 花牧岚 2300 10 鲁素 9000 10 孙荃 3450 20 周语 3000 20 诸葛靓 2100 20 江叁讲 2975 20 穆归营 3000 20 张妃 1800 30 李斯硼 2250 30 曹草 2500 30 邓笑评 3850 30 刘蓓 2250 30 关玉 2600 已选择13行。
因字段别名只能在"select"后面的字段列表中被指定,所以这个别名一定要在 "select"后面的字段列表中存在。事实上,别名作为表达式的一部分也是可以的。
1select
DEPID,STDNAME,SALARY 工资 2from
STUFF 3*order by
DEPID,工资desc
SQL> / DE STDNAME 工资 -- -------- ---------- 10 鲁素 9000 10 孙荃 3450 10 花牧岚 2300 20 周语 3000 20 穆归营 3000 20 江叁讲 2975 20 诸葛靓 2100 20 张妃 1800 30 邓笑评 3850 30 关玉 2600 30 曹草 2500 30 刘蓓 2250 30 李斯硼 2250 已选择13行。