第3课 排序检索数据

第3课 排序检索数据

3.1 排序数据

ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

SELECT prod_name
FROM Products
ORDER BY prod_name; 

ORDER BY子句的位置
在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错误消息。

3.2 按多个列排序

要按多个列排序,简单指定列名,列名之间用逗号分开即可(就像选择多个列时那样)。

下面的代码检索3个列,并按其中两个列对结果进行排序——首先按价格,然后按名称排序。

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name; 

对于上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。

3.3 按列位置排序

除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;

ORDER BY 2,3表示先按prod_price,再按prod_name进行排序。

3.4 指定排序方向

为了进行降序排序,必须指定DESC关键字。

下面的例子以价格降序来排序产品(最贵的排在最前面):

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC; 

如果打算用多个列排序,该怎么办?下面的例子以降序排序产品(最贵的在最前面),再加上产品名:

SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;

DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定DESC,对prod_name列不指定。

警告:在多个列上降序排序
如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。

3.5 小结

这一课学习了如何用SELECT语句的ORDER BY子句对检索出的数据进行排序。这个子句必须是SELECT语句中的最后一条子句。根据需要,可以利用它在一个或多个列上对数据进行排序。

原文地址:https://www.cnblogs.com/zhangsonghui/p/12943037.html