更多SQL Sever基础知识查看SQL Sever 基础知识(全)

特别说明
  本文章所用的所有数据库数据表及其数据皆为AI随机生成,不涉及个人隐私,且仅供学习使用

二 、对数据进行排序

按一列或多列对查询结果集进行排序

第1节 ORDER BY 子句简介

使用 SELECT 语句表中查询数据时,结果集中的行的顺序不能保证。说明SQL Server可以返回具有指定顺序结果集,确保结果集中的行已排序唯一方法使用 ORDER BY 子句
以下说明 ORDER BY 子句语法

 select &lt;列名1&gt;,<列名2&gt;,...
 from [表名]
 order by <列名&gt; [ASC|DESC]; --asc升序排序默认,可省略);desc降序排序

order by指定一个列名表达式,根据该列名或表达式对查询结果集进行排序。如果指定多列,则结果集按第一列排序,然后按第二列排序该排序结果集,依此类推。

出现在order by子句中的列必须对应选择列表中的列或在 form 子句中指定表中定义的列。

使用 ASCDESC 指定指定列中的值是否应按升序或降序排序。如果没有显式指定 ASCDESC ,将使用 ASC 作为默认排序顺序
此外,SQL ServerNULL视为最小值

第2节 ORDER BY 子句示例

2.1 按一列升序结果集进行排序

查询ZCustomers表中所有客户姓名,并升序排序:

 select cust_name 
 from ZCustomers
 order by cust_name

没有指定 ASC 或 DESC ,所以 ORDER BY 子句默认使用 ASC 。
执行结果:
在这里插入图片描述

2.2 按一列降序对结果集进行排序

查询ZCustomers表中所有客户姓名,并降序排序:

 select cust_name 
 from ZCustomers
 order by cust_name desc

执行结果:
在这里插入图片描述

2.3 按多列对结果集排序

查询ZCustomers表中所有客户的名字城市。它先按城市然后名字对客户列表进行排序:

 select cust_city,cust_name,cust_address
 from ZCustomers
 order by cust_city,cust_name

执行结果:
在这里插入图片描述

2.4 按多列对结果集不同排序

查询ZCustomers表中所有客户的名字城市。它先按城市升序然后名字降序对客户列表进行排序:

 select cust_city,cust_name,cust_address
 from ZCustomers
 order by cust_city,cust_name desc

执行结果:
在这里插入图片描述

2.5 按不在选择列表中的列对结果集进行排序

可以按未出现在选择列表中的列对结果集进行排序。查询ZCustomers表中所有客户的名字城市,对cust_zip升序排列

 select cust_city,cust_name,cust_address
 from ZCustomers
 order by cust_zip

执行结果:
在这里插入图片描述
Note:
order by后列是在表中有定义的;如果未定义,则查询无效

2.6 按表达式对结果集排序

用到一个LEN( )函数LEN( )函数的作用是:返回字符串中的字符数。
以下语句使用 ORDER BY 子句中的 LEN( ) 函数检索名字长度排序的客户列表

 select cust_city,cust_name,cust_address
 from ZCustomers
 order by len(cust_name)

执行结果:
在这里插入图片描述

2.7 按列的顺序位置排序

SQLServer允许根据选择列表中出现的列的序号位置对结果集进行排序。
查询ZCustomers表中所有客户的名字城市。它先按城市升序然后按名字降序对客户列表进行排序:

 select cust_city,cust_name,cust_address
 from ZCustomers
 order by 1 ,2 desc

执行结果:
在这里插入图片描述
在此示例中,1表示 cust_city列,2表示 cust_name列。

推荐ORDER BY 子句中使用列的顺序位置排序,原因两个
①表中的列没有顺序位置需要通过名称引用
②当修改选择列表后可能会忘记在 ORDER BY 子句中进行相应的更改
因此,最好始终在 ORDER BY 子句中显式指定列名

原文地址:https://blog.csdn.net/emmmheng/article/details/134703053

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_22418.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注