我有一个包含两个列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'
答案 0 :(得分: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 ;