2012-04-25 5 views
1

나는 이와 같은 MySQL 테이블을 가지고 있습니다.MySQL 쿼리 : 그룹에서 가장 높은 값을 가진 레코드를 선택하십시오.

| season_id | round_1 | names | score_round_1 
| 5   | 10  | John1 | 5 
| 5   | 10  | John2 | 3 
| 5   | 11  | John3 | 2 
| 5   | 11  | John4 | 5 

각 round_1 (10,11) 그룹에서 score_round_1이 가장 높은 레코드를 선택하고 싶습니다.

이 경우 첫 번째 행과 마지막 행이 선택됩니다.

GROUP BY round_1을 사용해 보았지만 둘 중 첫 번째 행만 반환합니다.

어떤 조언이 필요합니까?

Zolka

답변

0

를 사용하여 집계 함수는 MAX

SELECT names, MAX(score_round_1) GROUP BY round_1 
+0

간단하다. 즉 아마 옳지 않은 John1-5와 John3-5를 반환 할 것입니다. – Zolka

+0

@ Zolka 나는 당신을 못 가져옵니다. 이름도 포함시키고 싶습니까? –

+0

네, 실제로 가장 높은 score_round_1이 필요하며 그 이름입니다. 분명치 않으면 미안 해요. – Zolka

0
SELECT * 
FROM table p1 
WHERE score_round_1 = (
SELECT MAX(p2.score_round_1) 
FROM table p2 
WHERE p1.round_1 = p2.round_1 ) ANDround_1 !=0 
+0

나는 단 1 개의 테이블을 가지고 있지만 쿼리에서 2 개의 테이블 p1과 p2를 볼 수 있습니까? 당신은 명확히 할 수 있습니까? – Zolka

0

이것은 가장 높은 score_round_1를 반환하지만 내가 처음 이름을 반환, 나는 이미이 시도

select max(score_round_1), 
     name 
from score 
group by round_1 
+0

그룹의 최대 레코드에 대한 올바른 행 데이터를 반환하지 않습니다. – Chris

관련 문제