2

我想知道执行 SQL 查询的最佳方法。我有一个表,其中包含与文章相关的主题(每篇文章至少包含 2 个主题)。用户正在搜索两个主题,我需要回复所有文章。

我有一个看起来像这样的表:

SubjectID ---> 键

文章编号

我的查询如下:

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 上创建一个连接表并过滤相关主题。distinct 确保您的列表仅包含唯一的 ArticleID

于 2012-11-11T08:31:55.233 回答