2010-02-22 4 views
0

나는 6 열이있는 테이블이 있습니다. id이 기본 키입니다.파이어 버드 그룹

해당 그룹에 대해 고유 한 a, b, c, max (d)를 검색하려고합니다. 그리고 max (d)와 동일한 행에 e가 있습니다 ("id"열은 내 쿼리와 관련이 없습니다).).

나는이 쿼리 시도 :

SELECT a, b, c, MAX(d), e 
FROM tablename 
GROUP BY a, b, c; 

를하지만 나에게 "(안 집계 함수 나 GROUP BY 절 중 하나에 포함) 선택 목록에 잘못된 표현을."제공합니다. 추가 GROUP BY e를 추가하면 각 항목마다 고유 한 a, b, c, e가 MAX (d)와 함께 제공되므로 필요한 항목이 아닙니다. 나는 왜 이런 일이 일어나는 지 이해한다. 내가 이해하지 못하는 것은 그것이 필요한 것을 어떻게 하는가이다. ...

서브 쿼리는 갈 길이 멀지 않은가? 나 한테 쓸 수 있니?

가장 실망스러운 것은 내 쿼리 :(MySQL의에서 여러 행이 MAX(d) 공동 경우,이 쿼리가 d 값으로 a,b,c의 모든 행을 반환 할 것을

답변

1
SELECT t1.a,t1.b,t1.c,t1.d,t1.e 
FROM tablename AS t1 
INNER JOIN (SELECT a, b, c, MAX(d) d 
      FROM tablename 
      GROUP BY a, b, c 
      ) AS t2 
ON t1.a = t2.a 
AND t1.b = t2.b 
AND t1.c = t2.c 
AND t1.d = t2.d 

참고 일 것입니다.

이 시나리오에서 MySQL이 중복 행을 처리하는 방법을 모르겠다.

관련 문제