You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSSQL中ORDER BY结合OFFSET和FETCH NEXT出现重复记录问题

解决单列重复值排序导致的分页重复问题

当排序列(如dob)存在重复值时,数据库对这些重复值记录的排序是不稳定的——每次查询时它们的相对顺序可能随机变化,进而导致分页操作中同一条记录出现在不同页码的结果里。

要解决这个问题,即使要求主要按存在重复值的单列排序,也可以在ORDER BY子句中追加一个唯一标识列(例如你的id列)作为辅助排序条件。唯一列能为重复排序值的记录提供固定的排序依据,确保每次查询时这些记录的相对顺序完全一致,彻底避免分页重复。

修改后的分页查询示例

第一页(前10条记录)

SELECT [id]
      ,[name]
      ,[dob]
FROM [Production].[dbo].[test]
ORDER BY [dob] ASC, [id] ASC
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY

第二页(接下来10条记录)

SELECT [id]
      ,[name]
      ,[dob]
FROM [Production].[dbo].[test]
ORDER BY [dob] ASC, [id] ASC
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY

这里利用id的唯一性,让相同dob的记录始终按id升序排列,数据库每次执行分页查询时,这些记录的位置都会固定,不会出现跨页重复或遗漏的情况。

内容的提问来源于stack exchange,提问作者DevMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:19:59