いいえ。
結果の順序を保証するには、最も外側のクエリに適用される を使用する必要があります。ORDER BY
それ以外はただの偶然です。
SELECT
ROW_NUMBER() OVER(PARTITION BY categoryid
ORDER BY unitprice, productid) AS rownum,
categoryid, productid, productname, unitprice
FROM Production.Products
ORDER BY categoryid,unitprice,productid;
ORDER BY
次の 2 つの役割があります。
- 別の機能がどのように機能するかを実際に定義すること。これは
TOP
、たとえば、またはOVER()
パーティション関数内で使用する場合に当てはまります。並べ替えを行う必要はありません。「この定義は、結果セット内の行が特定の順序で発生することを考慮した場合にのみ意味があります。これが私が使用したい順序です」
- 結果セットのソート順を指定します。これは
ORDER BY
、サブクエリ、CTE、OVER()
パーティション関数などではなく、特定のクエリの一部である最も外側のステートメントの句である場合に当てはまります。
場合によっては、一度に両方の意味で使用されることがあります。最も外側のステートメントに aTOP
またはOFFSET
/が含まれている場合はFETCH
、両方の目的で使用されます。