我的 SQL Server 数据库遇到了一个非常奇特的情况,从昨天开始就一直在搜索……但我现在必须放弃。
我有一个
Document
表(DocumentID (PK), ArchiveNo
等...)
和一个
LanguageVersion
表 (LanguageVersionID (PK), LanguageVersionID (FK), ReleaseDate, Language
等...) 与Document
(1 Document has (n) LanguageVersions) 有:1 关系。
在用户搜索之后,我已经有了一个Document
允许用户查看的列表。这些必须按ReleaseDate
位于LanguageVersion
表中的 排序。
所以我加入LanguageVersion
了它,自然导致Document
条目重复,将这个结果排序ReleaseDate
并切断除DocumentID
.
好的 - 到目前为止,我得到了一个DocumentID
按正确顺序排列的 's 列表,但有重复。
现在为了显示结果,要求将这些结果按 20 页!!Documents!! 分组。因此,我找到了 2 个可能的解决方案:无论是该ROW_NUMBER()-OVER()
子句还是 SQL Server 2012 中都有ORDER-BY
带有OFFSET
and的子句的新扩展FETCH NEXT
。
问题是,这两个都需要一个排序列来生成行号作为范围选择的基础。
如果我
ReleaseDate
将此排序保留在我的临时结果中,则DocumentID
' 的区别将失败,因为 a 的每个副本DocumentID
都有不同的ReleaseDates
。如果我切断
ReleaseDate
,我可以这样做,DISTINCT
但会丢失用于生成范围索引的排序列。
我很沮丧,因为我习惯了 MySQL,在LIMIT
没有任何排序的情况下使用子句没有问题。
SQL Server 中没有任何等价物吗?
我已经按照正确的顺序获得了文档结果,唯一的问题是重复。我想要的是:DISTINCT
on DocumentID
,然后从中选择从 x 到 y 的范围。
提前问候和感谢,克里斯