SQL Server データベースで非常に特殊な状況が発生し、昨日から検索を続けています... しかし、今はあきらめなければなりません。
私は
Document
テーブル (DocumentID (PK), ArchiveNo
など)
そして
LanguageVersion
テーブル (など) は、 (1 つのドキュメントには (n) 個の言語バージョンがLanguageVersionID (PK), LanguageVersionID (FK), ReleaseDate, Language
あります) と 1 対 1 の関係があります。Document
ユーザー検索の後、ユーザーが表示できるリストが既にありDocument
ます。ReleaseDate
これらは、表にある でソートする必要がありLanguageVersion
ます。
だから私はそれに参加LanguageVersion
し、当然のことながらDocument
エントリの重複が発生し、この結果を でソートしReleaseDate
、DocumentID
.
わかりました-これまでのところDocumentID
、正しい順序で のリストを取得しましたが、重複があります。
結果を表示するには、これらの結果を 20 ページの !!Documents!! ごとにグループ化する必要があります。したがって、私は2つの可能な解決策を見つけました.ROW_NUMBER()-OVER()
句またはSQL Server 2012には、ORDER-BY
句の新しい拡張がありますOFFSET
and FETCH NEXT
.
問題は、範囲選択のベースとして行番号を生成するために、これらの両方が順序付け列を必要とすることです。
ReleaseDate
この順序付けの一時的な結果にを保持すると、 のすべての複製が異なるを持つDocumentID
ため、 の区別は失敗します。DocumentID
ReleaseDates
を切り落とすと
ReleaseDate
、 を実行できますがDISTINCT
、範囲インデックスを生成するための順序付け列が失われます。
私は非常にイライラしています。なぜなら、LIMIT
順序付けなしで句を使用しても問題のない MySQL に慣れているからです。
SQL Server に同等のものはありませんか?
私はすでに文書の結果を正しい順序で持っていますが、唯一の問題は重複です。私が欲しいのはDISTINCT
、 on でDocumentID
、そこから x から y までの範囲を選択することだけです。
よろしくお願いします、クリス