我对 SQL Server 很陌生。现在我遇到了这样的查询:
SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC
order by 子句中没有给出列名。这可能吗?SSMS 说不。
约尔格
我对 SQL Server 很陌生。现在我遇到了这样的查询:
SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC
order by 子句中没有给出列名。这可能吗?SSMS 说不。
约尔格
这可能是印刷错误 - 您必须指定您订购的商品;这可以是列名、表达式或输出中的列号。您看到的查询很可能是后者之一,它只是省略了列号1
- 如下所示:
SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY 1 ASC
- 所以这将按输出的第一列的内容排序(即。country
)。
我同意@Mahmoud Gamal。但是,也可以像这样写这样的黑客 -
SELECT o.country, const_column = 1
FROM Hovercraft.Orders o
GROUP BY o.country
ORDER BY const_column ASC
在这种情况下,将执行排序,但不会更改行的顺序。
在 MS SQL 2005 上:
在 MS SQL 2012 上:
这是不可能的 !..
Order by 子句总是需要列名或列号。
你能回答我为什么你想要这种情况吗,我想你正在使用动态查询,否则请告诉我。
根据 SQL 标准,这是不可能的。
谢谢。