在数据库中,如果不排序检索的顺序,数据一般将以它在底层表中出现的顺序显示。
sql的语句由子句构成,有些子句是必须的,有些则是可选的。一个子句通常由一个关键字加上所提供的数据组成。
可以使用order by子句对select检索的数据进行排序:
select prod_name
from Products
order by prod_name
未排序的数据:
使用order by排序的数据:
在指定一条order by自己时,应保证它是select语句中最后一条子句。
按多个列排序
select prod_id, prod_price, prod_name
from Products
order by prod_price, prod_name
order by子句优先排列prod_price列,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有值都是唯一的,则不会按prod_name排序。
按列位置排序:
select prod_id, prod_price, prod_name
from Products
order by 2, 3;
效果如上图。这一技术的主要好处在于不用重新输入列名。
缺点也很明显,不明确给出列名可能造成错用列名排序。其次,在对select清单进行更改时容易错误的对数据进行排序。最后,如果进行排序的列不在select清单中,显然不能使用这项技术。
指定排序方向:
数据默认排序是升序排序,要对数据进行降序排序,要指定关键字DESC。
select prod_id, prod_price, prod_name
from Products
order by prod_price desc
DESC关键字只应用到直接位于其前面的列名。所以要进行多个列的逆序排序,每个列都要添加DESC才能进行。