我在使用 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 使用查询时,也会发生这种情况。
我遇到了同样的问题:查询总是独立于偏移值 (30) 返回相同的行:
OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)
奇怪的是,也许您在 ORDER BY 中的列不是确定性的,并且会产生问题。字段列可以包含重复项吗?如果是这样,请在 ORDER BY 子句中的字段列之后添加主键列。
我通过将 [ID] 列添加到 Order By 中解决了这个问题:
ORDER BY [Status], [ID] ASC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |