【问题标题】:Proper way to order by name in SQL Server在 SQL Server 中按名称排序的正确方法
【发布时间】:2015-02-14 14:15:28
【问题描述】:

我有一个包含如下行的查询:

SELECT    B.LastName + ', ' + B.FirstName AS TM

目前我使用ORDER BY TM 进行排序,这似乎有效。

但是,为了正确地做,有人能告诉我TM在这里订购的正确方法是什么吗?

ORDER BY TM,  
ORDER BY B.TM,  
ORDER BY B.LastName + ', ' + B.FirstName 

还是别的什么?

另外,您能告诉我是否需要将TM 放在单引号中吗?

它似乎没有引号也能工作,但我想确保我做对了。

【问题讨论】:

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


    【解决方案1】:
    ORDER BY TM
    

    最好的方法!

    ORDER BY B.TM,
    

    不,TM 不是 B 的列之一。

    ORDER BY B.LastName + ', ' + B.FirstName
    

    可以,但第一种选择要容易得多。

    保留字和包含奇怪字符(包括空格)的标识符需要引号。

    【讨论】:

    • 太完美了——非常感谢!我会尽快接受。 :)
    • 为了增加您的答案,第三种选择使查询计算两次。使用第一种替代方法中的列别名可以避免这种成本。
    • @user2571510 不,这不是真的。 SQL Server 足够聪明,只计算一次。
    • @jarlh 您可以使用 TM 的原因是因为 ORDER BY 适用于结果集。如果要使用 GROUP BY,则必须使用 B.LastName + ',' + B.FirstName 因为 GROUP BY 对结果集不起作用,因此 TM 不起作用。
    • @史蒂夫福特。我知道。在 group by 的情况下,我会使用另一种解决方案。 (即从列表中选择。)
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多