7

我对 SQL Server 很陌生。现在我遇到了这样的查询:

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

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

约尔格

4

3 回答 3

10

这可能是印刷错误 - 您必须指定订购的商品;这可以是列名、表达式或输出中的列。您看到的查询很可能是后者之一,它只是省略了列号1- 如下所示:

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

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

于 2013-04-17T08:05:11.043 回答
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 上:

@Martin Smith 的教授

在 MS SQL 2012 上:

@Martin Smith 的教授

于 2013-04-17T07:57:41.100 回答
0

这是不可能的 !..

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

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

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

谢谢。

于 2013-04-17T09:35:33.303 回答