排序
数据检索
select t.* from products t;
检索出的数据并不是随机显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。为了明确地排序用 SELECT语句检索出的数据,可使用 ORDER BY子句。
order by
按照产品名排序 order by 默认是升序排序,asc
select * from products order by prod_name; -- 升序(**默认**)
select * from products order by prod_name desc; -- 降序(**关键字desc**)
按多个列排序
要按多个列排序,简单指定列名,列名之间用逗号分开即可。
select * from products order by prod_price,prod_name; -- 1
select * from products order by prod_price asc ,prod_name desc; -- 2
在按多个列排序时,排序的顺序完全按规定进行。换句话,对于上述例子中的输出,仅在多个行具有相同的prod_ price值时才对产品按 prod_name进行排序。如果 prod_price列中所有的值都是唯一的,则不会按 prod_name排序。(prod_name仅仅只提供补充排序,sql中允许为每个字段提供排序方式,如上2所示,首先以price进行升序排序,当price相同的时候再以name对相同的数据进行降序排序)
按位置排序
除了能用列名指出排序顺序外, ORDER BY还支持按相对列位置进行排序。(检索的字段顺序)
select t.prod_id from products t order by 1 desc ;