对于搜索类型的网页,我有一个中等复杂的查询(到目前为止超过 1K LOC)。结果集需要按特定顺序排列。有 7 种不同的标准可用于订购此套装。我有两个 TABLE 变量,一个名为 @stageTable 和 @resultTable。我使用搜索参数运行动态查询并将结果放入@stageTable。然后,我为 7 个订单标准中的每一个处理 @stageTable,并将每个块放入 @resultTable。这按预期工作。
我被要求为这个怪物查询添加分页。我用 ROW_NUMBER() 路线去了 CTE。但是,我意识到这不尊重@resultTable 中的顺序。我遇到的问题是 ROW_NUMBER() OVER 子句使用了 ORDER BY,它不允许我保持我在@resultTable 中精心设计的顺序。我尝试了不同的方法,包括在 CTE 中添加 CASE 块。
该问题仅适用于用户第一次加载页面时,以及当他们在不使用搜索页面的任何条件的情况下滚动时。
关于如何处理这个问题的任何想法?