我正在尝试使用ROW_NUMBER()OVER从视图中选择DISTINCT行进行分页。当我将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时,它会正确地命令它们。
感谢。
答案 0 :(得分:5)
将DISTINCT应用于包含ROW_NUMBER()的列列表将始终导致每一行都不同,因为每行有一个ROW_NUMBER。
答案 1 :(得分:2)
RowId值是否正确?也许你只需要外部查询的ORDER BY RowId子句?
答案 2 :(得分:1)
您是否尝试过在外部选择中使用订单并删除OVER子句?