我的 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带有OFFSETand的子句的新扩展FETCH NEXT。
问题是,这两个都需要一个排序列来生成行号作为范围选择的基础。
如果我
ReleaseDate将此排序保留在我的临时结果中,则DocumentID' 的区别将失败,因为 a 的每个副本DocumentID都有不同的ReleaseDates。如果我切断
ReleaseDate,我可以这样做,DISTINCT但会丢失用于生成范围索引的排序列。
我很沮丧,因为我习惯了 MySQL,在LIMIT没有任何排序的情况下使用子句没有问题。
SQL Server 中没有任何等价物吗?
我已经按照正确的顺序获得了文档结果,唯一的问题是重复。我想要的是:DISTINCTon DocumentID,然后从中选择从 x 到 y 的范围。
提前问候和感谢,克里斯