码迷,mamicode.com
首页 > 数据库 > 详细

TSQL order by 子句中排序列的多种写法

时间:2017-04-25 15:06:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:tsql

    

Order by 子句用于对结果进行排序,执行顺序位于select子句之后,排序列有4中写法:

  • column_name

  • column_alias,由于order by子句的执行顺序位于select子句之后,因此,可以使用列的别名;

  • nonnegative integer,用于表示select子句中column的位置,位置从1开始;

  • Column Expression

也可以指定多列排序,每一列只能出现一次,排序的规则是先按照第一列排序,其次按照第二排序,然后按照第三列等排序,依次类推。

1,创建示例表数据

技术分享

CREATE TABLE [dbo].[dt_test](    [id] [int] NULL,    [code] [int] NULL,    [name] [varchar](10) NULL)

技术分享

2,使用column name

select id,code,name 
from dbo.dt_test dt with(nolock)order by dt.id

技术分享

3,使用Column Alias,order by子句中能够使用Alias的原因是,SQL Server Engine先执行select 子句,后执行order by 子句。

select id as OrderID,code,name 
from dbo.dt_test dt with(nolock)order by OrderID

技术分享

4,使用column order来进行排序,即使用一个正整数来表Select clause中column的顺序来进行排序

select id ,code,name 
from dbo.dt_test dt with(nolock)order by 1

技术分享

5,使用column expression来进行排序,执行顺序是先计算Column Expressino的值,然后对查询的结果进行排序。

select id ,code,name 
from dbo.dt_test dt with(nolock)order by id+code

技术分享

6,使用column expression来进行排序,执行顺序是先计算Column Expressino的值,然后对查询的结果进行排序。

select id ,code,name 
from dbo.dt_test dt with(nolock)order by id%3

技术分享


TSQL order by 子句中排序列的多种写法

标签:tsql

原文地址:http://hzz333.blog.51cto.com/12844012/1919088

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!