【问题标题】:Can we perform order by on more than 2 columns in SQL Server我们可以在 SQL Server 中对超过 2 列执行排序吗
【发布时间】:2015-10-29 03:52:23
【问题描述】:

如果我们可以对两个以上的列执行 order by,那就有点困惑了。

结果如下:-

Select * 
from orderbytest 
order by FName desc, LName desc, YearOfBirth desc

结果输出:

FName     LName         YearOfBirth
------------------------------------
Thomas    More          1478
Thomas    Jefferson     1826
Thomas    Alva Edison   1847
Benjamin  White         1600
Benjamin  Franklin      1706

【问题讨论】:

  • 是的,我们可以将其作为订单的优先级
  • 好吧,你为什么会感到困惑?如果 LName 列中也有重复项,结果会更容易理解。
  • 不要混淆。保持冷静并尝试理解代码。看好:)
  • 看到这个answer

标签: sql sql-server database select sql-order-by


【解决方案1】:

是的,你可以。尝试此查询以了解多于一列的顺序:

select *
from
(
    select 'ashish' col1,1 col2
    union all
    select 'ashish',3
)base
order by col1 asc, col2 desc

【讨论】:

    【解决方案2】:

    这将按 FName 、 LName 、 YearOfBirth 的降序排列

    SELECT        FName, LName, YearOfBirth
    FROM            orderbytest
    ORDER BY FName DESC, LName DESC, YearOfBirth DESC
    

    升序:

    SELECT        FName, LName, YearOfBirth
    FROM            orderbytest
    ORDER BY FName , LName , YearOfBirth 
    

    【讨论】:

      【解决方案3】:

      是的,你可以随心所欲地执行就像分组一样。

      这里;

      Select * from orderbytest order by FName ,LName asc,YearOfBirth desc
      

      不是这样,当你不在字段后面写任何关键字时,结果将按默认顺序列出。

      【讨论】:

      • 要明确一点:默认排序顺序是 asc - 所以这是按 FName asc、LName asc 和仅按 YearOfBirth desc - 不像 OP 在他的问题中所说的那样。
      • 是的先生,我错过了一些东西,我编辑了帖子。谢谢你的警告。
      【解决方案4】:

      简短的回答 - 是的。

      当应用多个order by 表达式时,结果按第一个排序。当多行在第一个表达式中具有相同的值时,它们在内部按第二个排序。当多行在表达式的第一和第二顺序中具有相同的值时,它们将按第三顺序排序,依此类推。

      在这里,您的所有行都有前两个表达式的唯一组合,因此第三个虽然仍然有效,但无关紧要。

      【讨论】:

      • 我想我明白了。谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      相关资源
      最近更新 更多