包含"in"子句的简单SQL查询,检查更好的语法



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

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

主题 ID --->键

文章编号

我的查询如下:

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

我有一种感觉,有一种更好的方法来执行此任务,可能是有效的查询或不同的数据结构。也许你们中的一个人知道更好的方法,或者你可以放心这是最好的方法。谢谢。

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

因此,您将在 ArticleID 上创建一个联接表,并筛选相关主题。非重复项确保您的列表仅包含唯一的文章 ID

相关内容

  • 没有找到相关文章

最新更新