0

我有一个包含两列 meetingID 和 caseID 的表。meetingID 可以来自三个类别之一,因此我使用子查询通过仅返回与该类别匹配的另一个表中的 meetingID 来选择特定的一个。

一旦我有了这个 meetingID 列表,我想计算其中有多少有两个 caseID。我还需要从计数中排除一些 caseID,但这暂时无关紧要。

这是我到目前为止的代码;

  SELECT COUNT( meetingID ) , meetingID
FROM case_meeting
WHERE meetingID
 IN (

SELECT DISTINCT a.meetingID
FROM case_meeting a
INNER JOIN meeting b ON a.meetingID = b.meetingID
WHERE b.categoryID =  '1'
)
GROUP BY meetingID
HAVING COUNT( caseID ) =2

我遇到的主要问题实际上是编写代码来成功计算具有两个 caseID 的 meetingID 的数量,而不是返回它们的列表。

目前代码正在返回一个列表,其中行数与我想要的数字相匹配,并且每一行都是'2'

4

1 回答 1

1

如果对 有UNIQUE约束(meetingID, caseID)

SELECT cm.meetingID
FROM case_meeting AS cm
  INNER JOIN meeting AS m 
    ON m.meetingID = cm.meetingID
WHERE m.categoryID = 1
GROUP BY cm.meetingID
HAVING COUNT(*) = 2 ;

如果没有,请将最后一行更改为:

HAVING COUNT(DISTINCT cm.caseID) = 2 ;
于 2013-01-17T15:15:53.843 回答