2

SQL クエリを実行する最良の方法について疑問に思っています。ARTICLES に関連する SUBJECTS を含むテーブルがあります (各記事には少なくとも 2 つの SUBJECTS が含まれます)。ユーザーは 2 つの件名を検索しており、私はすべての記事を返信する必要があります。

次のようなテーブルがあります。

SubjectID ---> キー

記事ID

私のクエリは次のとおりです。

SELECT  ArticleID
FROM    tblSubjectsInArticles
WHERE   SubjectID = @pSubjectID1
        AND ArticleID IN (SELECT ArticleID FROM tblSubjectsInArticles WHERE SubjectID = @pSubjectID2);

このタスクを実行するためのより良い方法、おそらく効率的なクエリまたは別のデータ構造があると感じました。たぶん、あなたの誰かがより良い方法を知っているか、これが最善の方法であると安心させることができます. ありがとう。

4

1 に答える 1

0
select distinct s1.ArticleID
from   tblSubjectsInArticles s1
         join tblSubjectsInArticles s2 
           on s1.ArticleID = s2.ArticleID
where  s1.SubjectID = @pSubjectID1
   and s2.SubjectID = @pSubjectID2

したがって、ArticleIDに結合テーブルを作成し、関連するサブジェクトでフィルタリングします。明確にすることで、リストに一意のArticleIDのみが含まれるようになります

于 2012-11-11T08:31:55.233 に答える