我想知道执行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