我将文字与关键字进行匹配。我需要返回包含2个关键字(4)和(7)的所有文本:
TextID KeywordID
2 4
2 7
3 4
4 4
5 4
5 7
6 4
6 7
7 4
7 7
8 4
9 4
10 4
10 7
11 4
12 4
问题是如何排除不包含文本ID 3,4,8,9,11的文本(它们不应该在结果中)?
非常感谢任何帮助!
答案 0 :(得分:2)
一种方法使用group by
和having
:
select textid
from t
where keywordid in (4, 7)
group by textid
having count(*) = 2;
如果表格可能有重复项,请使用count(distinct keywordid)
。
答案 1 :(得分:1)
假设您没有重复的textId-KeywordId
对,则下面应该有效:
SELECT textid
FROM table
WHERE keywordId in (4,7)
GROUP BY textid
HAVING COUNT(*) >= 2
如果您有重复项,则可以按照@ Gordon的回答使用count(distinct keywordId)
。
<强>更新强> 这是MS Access查询:
SELECT tblPerformanceKeyword.TextID
FROM tblPerformanceKeyword
WHERE tblPerformanceKeyword.KeywordID = 4 Or tblPerformanceKeyword.KeywordID = 7
GROUP BY tblPerformanceKeyword.TextID
HAVING COUNT(tblPerformanceKeyword.KeywordID) >= 2;