私のウェブサイトには非常に奇妙な問題があり、最終的には正確な原因を特定することに成功しました。SQL SERVER - FETCH NEXT ROWSは重複した結果を返します
私のEntitiesテーブルには、「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
どんなに私が使用している場合は、30または40または50をOFFSET!
本当に奇妙な部分:SELECT内で「タイトル」(例:SELECT ID、タイトル)を選択するように頼んでも、正しい結果が得られます。
アイデア?
を受けた私は、RANKがこのよう... IDによってなぜだけではなく、順序を使用することを意味しているとは思いませんか? –
関連度順に並べ替える必要があります – Illidan
最初に結果をテンポラリテーブルにダンプしてから、魅力的なページをページ分割するとどうなりますか? – Jeremy