2010-11-11 59 views
0

这给了我所有包含上述实体的文章。Mysql内部加入问题

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 

我缺少/做错了吗?

在此先感谢

+0

是否有使用表的别名,如果它是你正在使用的唯一表中的任何原因? – Danosaure 2010-11-11 23:53:44

回答

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 
0

必须有比你显示什么这里,因为你在你的问题出什么,结果应该是两个查询相同(如果ENTITY_ID等于更多查询到id_1或id_2,它已经不等于id_3)。

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