私は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つである可能性が最も高く、単に列番号を省略したものです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 の場合: