3

我想写一个查询,只选择特定国家的问题,所以当我选择包含国家 1 和 2 的问题时,只显示有 2 个国家的问题,这些国家是 1 和 2。

我有 3 个表 - 问题、国家、问题_has_countries

  • 问题:身份证,问题
  • 国家:身份证,姓名
  • questions_has_countries : questions_id, countries_id

我试过了 :

SELECT q.question, q.id , c.id  
FROM questions as q, countries as c,  questions_has_countries as qhc
WHERE c.id = qhc.countries_id 
AND qhc.questions_id = q.id 
AND c.id IN (1,2) 
GROUP BY q.question
HAVING COUNT( qhc.countries_id ) = 2

当我使用第 5 行( AND c.id IN (1,2) )时,我的计数器停止正常工作,因为它正在缩小搜索范围。我知道我必须重写它,但我不知道如何。请帮忙。

4

1 回答 1

2

删除WHERE子句并将子句更改HAVING

HAVING  SUM(c.id IN (1,2)) = 2 AND
        COUNT(DISTINCT c.id) = 2
于 2013-09-16T08:57:57.987 回答