TSQL:按asc排序,不带列名

Jör*_*gel 7 t-sql sql-server

我是SQL Server的新手.现在我遇到了这样的查询:

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC
Run Code Online (Sandbox Code Playgroud)

order by子句中没有给出列名.这可能吗?SSMS说没有.

约尔格

小智 10

这也可能是印刷错误-你必须指定什么你被订购; 这可以是列名,表达式或输出中的列.你看到的查询最有可能是后者之一,它只是省略了列号1- 就像这样:

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY 1 ASC
Run Code Online (Sandbox Code Playgroud)

- 所以这将按第一列输出的内容排序(即.country).

  • +1不是针对你马克,但对于阅读此内容的任何人来说,在生产代码中按顺序排序 - SQL Server MVP Aaron Bertrand有一篇博客文章解释了原因:[糟糕的习惯:ORDER BY序数](http: //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/06/bad-habits-to-kick-order-by-ordinal.aspx) (5认同)