我正在尝试使用 ROW_NUMBER() OVER 进行分页从视图中选择不同的行。 当我将 ORDER BY 字段从 SMALLDATETIME 切换到 INT 时,我开始得到奇怪的结果:
SELECT RowId, Title, HitCount FROM
( SELECT DISTINCT Title, HitCount, ROW_NUMBER() OVER(ORDER BY HitCount DESC) AS RowId FROM ou_v_Articles T ) AS Temp
WHERE RowId BETWEEN 1 AND 5
此查询返回:
RowId | Title | HitCount
=======================
4 --- 9
1 --- 43
3 --- 11
2 --- 13
5 --- 0
结果显然顺序不正确。 我不确定这里的问题是什么,但是当我删除 DISTINCT 时,它对它们进行了正确的排序。
谢谢。
将 DISTINCT 应用于包含 ROW_NUMBER() 的列列表将始终导致每一行都是不同的,因为每行有一个 ROW_NUMBER。
您获得的 RowId 值正确吗?也许您只需要在外部查询上使用 ORDER BY RowId 子句?
您是否尝试过在外部选择上仅使用 order by 并删除 OVER 子句?