我有一个简单的表,我正在学习SQL的设置:
count(docnum, text, num)
如果count是表名,则docnum是唯一的文档编号,text是单词,num是编号为docnum的文档中该单词的出现次数。
我正在尝试创建一个查询,该查询返回包含两个单词的唯一文档的数量" Hello"和"世界" (即text =" Hello" and text =" World")。我使用INTERSECTION编写了以下查询,但我无法通过简单的JOIN查看如何执行此操作:
SELECT COUNT(*) FROM (
SELECT docnum d
FROM count
Where text="Hello"
INTERSECT
SELECT docnum e
FROM count
where text="World"
) x;
这有效但我无法通过连接了解如何执行此操作。任何帮助将不胜感激。
答案 0 :(得分:0)
您甚至不需要加入来获取包含这两个词的文档
select count(*)
from
(
select docnum
from `count`
where `text` in ('Hello', 'World')
group by docnum
having count(distinct `text`) = 2
) x
答案 1 :(得分:0)
这是一个连接
SELECT count(*)
FROM `count` a
JOIN `count` b ON a.docnum = b.docnum
WHERE a.text='Hello' AND b.text='World'
这是另一种方式(帽子提示jurgen d)
SELECT count(distinct docnum)
FROM `count`
WHERE `text` IN ('Hello','World')
group by docnum
having count(distinct `text`) = 2