0

ここでのスタディにマッピングされている個別の優先度のフェッチに問題
があります。結果を取得するために作成したクエリですが、結果は昇順でレコードをフェッチしていますが、内部クエリは逆の順序でフェッチしています

そして、私がdistinctを削除すると、レコードが降順で取得され、何が起こっているのかを理解して修正するのに役立つ

WITH Results AS
  (SELECT priority_fk,
          ROW_NUMBER() OVER (ORDER BY priority_fk DESC) AS RowNum
   FROM "priorities" P,
   "study" S
)
SELECT 
distinct priority_fk,
"RowNum"
FROM Results
WHERE RowNum > 0
  AND RowNum <= 0 + 100
4

1 に答える 1

2

ウィンドウ関数は、DISTINCT 句が評価される前に、SELECT リスト内の式の評価の一部として評価されます。ベスト プラクティスとして、同じ SELECT 句で DISTINCT と ROW_NUMBER の両方を指定しないでください。このような場合、DISTINCT 句は効果がないためです。また、@Klas 明示的な 'Order By' 句で指定されているように、セット内の行間の表示上の順序を確保するために必須であるため、同じものを外部クエリに含める必要があります。

于 2013-10-11T12:56:26.840 に答える