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 回答