如何运行此查询?

问题描述:

我有以下表如何运行此查询?

MID IID 

1 23 

1 24 

1 25 

2 32 

2 54 

3 11 

4 55 

5 67 

,我想找到所有的MID的其中count(IID)> 1个 即结果应该是以下

MID count(IID) 

1 3 

2 2 

PS - 我试过,但我得到所有MID的结果。这里是我的查询

select distinct a.MID,count(a.IID) from Item_attribute as a group by a.MID 
+0

附加这样的:“有计数(a.IID )> 1“ – dev8080

+0

是的,它工作..谢谢! –

+0

你也可以放弃这个不同。 –

having子句中添加这样的:在SELECT语句

having count(a.IID)>1 

使用HAVING子句:

SELECT a.MID,count(a.IID) 
FROM Item_attribute as a 
GROUP BY a.MID 
HAVING COUNT(a.IID) > 1 

请尝试以下...

SELECT MID, 
     COUNT(IID) as CountIID 
    FROM Item_attribute 
    GROUP BY MID 
HAVING COUNT(IID) > 1; 

对于您的其他查询请求Ë请尝试以下...

SELECT MID, 
     CountIID 
FROM 
(
    SELECT MID, 
      COUNT(IID) as CountIID 
    FROM Item_attribute 
    GROUP BY MID 
    HAVING COUNT(IID) > 1 
) AS limitedCountIIDFinder 
WHERE CountIID = (SELECT MAX(CountIID) AS MaxCountIID 
        FROM 
        (
         SELECT MID, 
           COUNT(IID) as CountIID 
         FROM Item_attribute 
         GROUP BY MID 
        ) AS countIIDFinder 
       ) 

(解释遵循...)

如果您有任何问题或意见,然后请随时据此发布评论。

+0

谢谢..还有一件事,如果我只需要找到包含max(count(iid))的MID,那又该如何呢? –

+0

我已经更新了我的答案,以包含一个查询,可以做到这一点。它会给你带有最高CountIID的所有记录。如果你只需要一个,那么选择哪一个是否重要? – toonice

如果您希望在汇总字段中具有条件,则需要使用having
如果您使用group by,您也不需要使用不同的分隔符。
你的情况:

select a.MID,count(a.IID) from Item_attribute as a group by a.MID having count(a.IID)>1 

如果你想获得最高计数值在排序下降,并得到最高的1:

having子句
select top 1 a.MID,count(a.IID) 
from Item_attribute as a 
group by a.MID 
having count(a.IID)>1 
order by count(a.IID) desc