gpt4 book ai didi

sql-server - SQL SERVER - FETCH NEXT ROWS 返回重复结果

转载 作者:行者123 更新时间:2023-12-01 22:16:38 26 4
gpt4 key购买 nike

我的网站出现了一个非常奇怪的问题,最后我成功查明了确切原因。

在我的“实体”表中,我有几个列,例如“Id”、“Title”、“Date”、“Indexing”等等。

使用全文索引编制索引的“索引”列。

考虑以下 SQL 查询:

SELECT Id 
FROM [dbo].[Entities] AS DocTable
INNER JOIN CONTAINSTABLE(Entities, Indexing, 'otherCriteria OR criteia') AS KEY_TBL
ON DocTable.Id = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC

此查询按预期工作,我得到了大约 600 个结果。

现在我添加分页:

SELECT Id 
FROM [dbo].[Entities] AS DocTable
INNER JOIN CONTAINSTABLE(Entities, Indexing, 'otherCriteria OR criteia') AS KEY_TBL
ON DocTable.Id = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY

无论我使用 OFFSET 30、40 还是 50 -> 我总是得到完全相同的结果!

现在真正奇怪的部分是:如果在 SELECT 中我还要求选择“标题”(例如 SELECT Id、标题)--> 我得到了正确的结果。

有什么想法吗?

最佳答案

好的,我想我明白了

In Sql Server 2014 ORDER BY clause with OFFSET FETCH NEXT returns weird results

说:

The ORDER BY clause contains a column or combination of columns that are guaranteed to be unique.

显然,“RANK”不是唯一的。当我将查询更改为:

SELECT Id 
FROM [dbo].[Entities] AS DocTable
INNER JOIN CONTAINSTABLE(Entities, Indexing, 'otherCriteria OR criteia') AS KEY_TBL
ON DocTable.Id = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC, Id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY

我收到了正确的结果

关于sql-server - SQL SERVER - FETCH NEXT ROWS 返回重复结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44934402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com