2017-04-15 2 views
1

나는 다음 표이 쿼리를 실행하는 방법?

MID IID 

1 23 

1 24 

1 25 

2 32 

2 54 

3 11 

4 55 

5 67 

이 있고 난 1 개 즉, 결과

MID count(IID) 

1 3 

2 2 

PS 다음해야 모든 MID의 경우 수 (IID)를> 찾으려면 - 나는 시도했지만 내가 무엇입니까 모든 MID에 대한 결과. 이 같은 여기 내 쿼리입니다

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

추가 HAVING 절을 "카운트를 가진 (a.IID 귀하의 경우에는
)> 1 " – dev8080

+0

그래, 잘 됐어. 고마워! –

+0

그리고 당신은 그것도 구별 할 수 있습니다. –

답변

1

추가 HAVING 절 : SELECT 문에서

having count(a.IID)>1 
0

사용 HAVING 절 :

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

다음 ...

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

고마워요 .. 한가지 더요. 내가 최대 (카운트 (iid))를 포함하는 MID 만 찾아야한다면 어떻게해야할까요? –

+0

나는 그것을 수행 할 쿼리를 포함하도록 내 대답을 업데이트했습니다. 최고의 CountIID를 가진 모든 레코드를 제공합니다. 하나만 원한다면 어느 것이 선택 되느냐가 중요합니까? – toonice

0

집계 된 필드에 조건을 적용하려면 having을 사용해야합니다.
그룹별로 사용하는 경우 별개를 사용할 필요가 없습니다.

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

당신이 최대 카운트 값이 다음은 내림차순으로 정렬하고 상위 1 얻기를 원한다면 :이 같은

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 
관련 문제