Sql server Order by子句的意外行为

Sql server Order by子句的意外行为,sql-server,sql-server-2005,sql-order-by,Sql Server,Sql Server 2005,Sql Order By,我有一张桌子,看起来像 Col1 col2 col3 col4 col5 1 5 1 4 6 1 4 0 3 7 0 1 5 6 3 1 8 2 1 5 4 3 2 1 4 剧本是 declare @t table(col1 int, col2 int, col3 int,col4 int,col5 int) insert into

我有一张桌子,看起来像

Col1    col2 col3 col4 col5
1  5       1     4     6
1  4       0     3     7   
0  1       5     6     3
1  8       2     1     5
4  3       2     1     4
剧本是

declare @t table(col1 int, col2 int, col3 int,col4 int,col5 int)
insert into @t 
select 1,5,1,4,6 union all
select 1,4,0,3,7 union all
select 0,1,5,6,3 union all
select 1,8,2,1,5 union all
select 4,3,2,1,4
我希望输出是按升序排序的每一列,即

Col1 col2 col3 col4 col5
    0  1       0     1     3
    1  3       1     1     4
    1  4       2     3     5
    1  5       2     4     6
    4  8       5     6     7
怎么做


提前感谢

排序顺序正确

它首先按col1排序,然后按col2排序(在col1中的任何副本中),等等

请注意,对于col2中的相同值,col2是按升序排列的:

Col1    col2    col3    col4    col5 
1       4         0     3       7 
1       5         1     4       6 
1       8         2     1       5 
这是另一个例子。假设我们有一个名为Lastname和Firstname的列表:

Smith, Ian
Smith, John
Smith, Dave
Smith, Jane
Green, Jim
Lastname ASC,Firstname ASC
排序,即:

Green, Jim
Smith, Dave
Smith, Ian
Smith, Jane
Smith, John

排序顺序是正确的

它首先按col1排序,然后按col2排序(在col1中的任何副本中),等等

请注意,对于col2中的相同值,col2是按升序排列的:

Col1    col2    col3    col4    col5 
1       4         0     3       7 
1       5         1     4       6 
1       8         2     1       5 
这是另一个例子。假设我们有一个名为Lastname和Firstname的列表:

Smith, Ian
Smith, John
Smith, Dave
Smith, Jane
Green, Jim
Lastname ASC,Firstname ASC
排序,即:

Green, Jim
Smith, Dave
Smith, Ian
Smith, Jane
Smith, John

列并不独立于它们的行——排序顺序应用于整行,而不是单个列。一行中的所有数据都被理解为是相关的——您不能单独对违反这一点的数据进行切片/切割/重新排列


在当前结构中,您无法执行您想要执行的操作。

列不是独立于行的--排序顺序适用于整行,而不是单个列。一行中的所有数据都被理解为是相关的——您不能单独对违反这一点的数据进行切片/切割/重新排列


在当前的结构中,您不能做您想做的事情。

但我希望输出对每一列进行排序—您认为您不可能做的事情!!您必须将每一列视为与其行分开的列。但是,我希望为每一列对输出进行排序—您认为您不可能做到这一点!!您必须将每一列视为独立于其行。+1我不会说不可能返回这些结果,但几乎可以肯定它在一个或多个级别上做错了(tm)。先生,那么实现这一点的问题是什么。。你可以吗help@Newbie:如果你可以编辑你的帖子来描述你真正想要完成的事情,也许我们可以帮你。胡乱猜测一下,你的桌子似乎没有正常化。没有人愿意给你答案的原因是:(a)正如乔恩·塞格尔所说,这将非常难做到;(b)将同一记录中的值拆分并将其与不同记录中的值重新关联的事实强烈表明,构建数据模型的方式存在错误。如果你愿意对你正在尝试做的事情给出更具体的解释,也许我们可以提出一个更有效的模型。+1我不会说不可能返回这些结果,但几乎可以肯定它在一个或多个层面上做错了(tm)。先生,那么实现这一点的问题是什么。。你可以吗help@Newbie:如果你可以编辑你的帖子来描述你真正想要完成的事情,也许我们可以帮你。胡乱猜测一下,你的桌子似乎没有正常化。没有人愿意给你答案的原因是:(a)正如乔恩·塞格尔所说,这将非常难做到;(b)将同一记录中的值拆分并将其与不同记录中的值重新关联的事实强烈表明,构建数据模型的方式存在错误。如果你愿意对你要做的事情给出一个更具体的解释,也许我们可以想出一个更好的模型。你能解释你为什么想要这个吗?你能解释你为什么想要那个吗?