在MYSQL中执行另一列的列计数

时间:2013-01-17 10:10:28

标签: mysql count

我有一个包含两个列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'

1 个答案:

答案 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 ;