如何运行此查询?
我有以下表如何运行此查询?
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
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
)
(解释遵循...)
如果您有任何问题或意见,然后请随时据此发布评论。
谢谢..还有一件事,如果我只需要找到包含max(count(iid))的MID,那又该如何呢? –
我已经更新了我的答案,以包含一个查询,可以做到这一点。它会给你带有最高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
附加这样的:“有计数(a.IID )> 1“ – dev8080
是的,它工作..谢谢! –
你也可以放弃这个不同。 –