订购问题的T-SQL SELECT DISTINCT&ROW_NUMBER()

Joe*_*oel 4 t-sql sql-server paging

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

此查询返回:

RowId | Title | HitCount
=======================
4  ---  9
1  ---  43
3  ---  11
2  ---  13
5  ---  0
Run Code Online (Sandbox Code Playgroud)

结果显然不是正确的顺序.我不确定这里有什么问题,但当我删除DISTINCT时,它正确地命令它们.

谢谢.

Mit*_*eat 5

将DISTINCT应用于包含ROW_NUMBER()的列列表将始终导致每行都不同,因为每行有一个ROW_NUMBER.