如何筛选表并加入结果

时间:2014-07-16 18:02:20

标签: mysql sql join

我有一个简单的表,我正在学习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;

这有效但我无法通过连接了解如何执行此操作。任何帮助将不胜感激。

2 个答案:

答案 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