Mysql内部加入问题

时间:2010-11-11 20:30:11

标签: mysql subquery inner-join

这给了我所有包含上述实体的文章。

SELECT COUNT(ArticlesEntity.article_id) AS article_count
FROM articles_entities ArticlesEntity 
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2') 
GROUP BY ArticlesEntity.article_id 
HAVING article_count>=2 

我现在想在此查询中添加一些内容,排除任何具有“ENTITY_ID_3”的实体。

我尝试了以下内容,但它返回了相同的结果:

SELECT COUNT(ArticlesEntity.article_id) AS article_count
FROM articles_entities ArticlesEntity 
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2') 
AND ArticlesEntity.entity_id NOT IN ('ENTITY_ID_3')
GROUP BY ArticlesEntity.article_id 
HAVING article_count>=2 

我错过了什么/做错了什么?

提前致谢

2 个答案:

答案 0 :(得分:1)

尝试类似:

SELECT COUNT(ArticlesEntity.article_id) AS article_count 
FROM articles_entities ArticlesEntity  
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2')  
    AND NOT EXISTS (
        select 1 
        from articles_entities 
        where article_id = ArticlesEntity.article_id 
            and entity_id = 'ENTITY_ID_3')
GROUP BY ArticlesEntity.article_id  
HAVING article_count>=2  

答案 1 :(得分:0)

您的查询必须比您在此处显示的内容更多,因为根据您在问题中显示的内容,两个查询的结果应该相同(如果entity_id等于id_1或id_2,则它已经是不等于id_3)。

编辑: 对不起,刚注意到两件事。 1)在您的问题陈述中,您说结果是相同的(如预期的那样)。 2)在你的标题中,你说“内部加入问题”,但是......你没有内心的加入。