ORDER BY子句
使用SELECT语句从表中查询数据时,不保证结果集中的行顺序。 这意味着SQL Server可以返回具有未指定行顺序的结果集。保证结果集中的行已排序的方法是使用ORER BY子句。 以下是ORDER BY子句的语法:
1、格式:
SELECT
<列名1>, <列名2>,...
FROM
<表名>
ORDER BY
<排列基准1> ,<排列基准2>,...<ASC | DESC>
- <排列基准1> ,<排列基准2>,…指定要对查询结果集进行排序的列名或表达式。 如果指定多个列,则结果集按第一列排序,然后该排序结果集按第二列排序,依此类推。ORDER BY子句中出现的列必须对应于选择列表中的列或FROM子句中指定的表中定义的列。
- ASC | DESC – 使用ASC或DESC指定是否应按升序或降序对指定列中的值进行排序。ASC将结果从最低值排序到最高值,而DESC将结果集从最高值排序到最低值。如果未明确指定ASC或DESC,则SQL Server将默认使用ASC来排序顺序。 此外,SQL Server将NULL被放在开头或者末尾。
2.书写顺序:select→from →where →group by→having→order by
执行顺序:from→where→group by→having→select→order by。
3.功能:对查询结果进行排序
4.演示:
--1.ORDER BY 子句,未指定排列顺序时会默认升序排列
select product_id,product_name,sale_price,purchase_price
from Product
order by sale_price;
--降序时,末尾加上DESC关键字
select product_id,product_name,sale_price,purchase_price
from Product
order by sale_price desc;
--2.指定多个排序键,规则:优先使用左侧的键,如果该列存在相同的值时,再接着参考右边的键
select product_id,product_name,sale_price,purchase_price
from Product
order by sale_price,product_id;
--3.使用含有null的列作为排序键时,null会在结果的开头或末尾汇总显示
select product_id,product_name,sale_price,purchase_price
from Product
order by purchase_price;
--4 排序键中可以使用别名的
select product_id as id,product_name,sale_price as sp,purchase_price
from Product
order by sp,id;
--5 order by 子句中也可以使用存在于表中、但并不包含在select子句之中的列
select product_name,sale_price,purchase_price
from Product
order by product_id;
--6 order by 子句中也可以使用聚合函数
select product_type,count(*)
from Product
group by product_type
order by count(*);
5.注意:
- ORDER BY子句中不要使用列编号
- 在ORDER BY子句中可以使用SELECT子句中定义的别名。
版权声明:本文为weixin_45666566原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。