非常简单的SQL查询

时间:2017-03-21 22:11:55

标签: sql ms-access

我将文字与关键字进行匹配。我需要返回包含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的文本(它们不应该在结果中)?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

一种方法使用group byhaving

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;