TSQL:按asc排序,没有列名

时间:2013-04-17 07:46:41

标签: sql-server tsql

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

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC

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

约克

3 个答案:

答案 0 :(得分:10)

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

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY 1 ASC

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

答案 1 :(得分:1)

我同意@Mahmoud Gamal。但是,也可以这样编写这样的黑客 -

SELECT o.country, const_column = 1 
FROM Hovercraft.Orders o
GROUP BY o.country 
ORDER BY const_column ASC

在这种情况下,将执行排序,但不会更改行的顺序。

在MS SQL 2005上:

Proff for @Martin Smith

在MS SQL 2012上:

Proff for @Martin Smith

答案 2 :(得分:0)

这是不可能的!..

Order by子句总是需要列名或列号。

请您回答我为什么要这种情况,我认为您正在使用动态查询,否则请告诉我。

根据SQL标准,这是不可能的。

感谢。