sql server 2012偏移量返回相同的记录

Dav*_*lli 4 sql-server-2012

我在使用 SQL Server 2012 时遇到了一个奇怪的问题。

我使用这样的查询

SELECT * FROM table ORDER BY field OFFSET 0 ROWS FETCH NEXT 25 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

每次我从 0 到 25、25 到 50、50 到 75、75 到 100 使用此查询时,它都会返回相同的 25 条记录。

当我将它与 100 到 125 一起使用时,它会返回原始的 25 到 50 等等......

我的表仅包含 197 条记录,并且这种情况仅发生在我的数据库的一个表中。所有其他表都正常工作。

当我通过代码 (ASP.NET C#) 直接从 SQL Management Studio 使用查询时,也会发生这种情况。

Sla*_*ppy 5

我遇到了同样的问题:查询总是独立于偏移值 (30) 返回相同的行:

OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY 
Run Code Online (Sandbox Code Playgroud)

对我来说,veljasije评论是正确的答案:

奇怪的是,也许您在 ORDER BY 中的列不是确定性的,并且会产生问题。字段列可以包含重复项吗?如果是这样,请在 ORDER BY 子句中的字段列之后添加主键列。

我通过将 [ID] 列添加到 Order By 中解决了这个问题:

ORDER BY [Status], [ID] ASC
Run Code Online (Sandbox Code Playgroud)