2012-11-26 3 views
0

에 라인에서 최대 값을 검색 할 때이 테이블이 다른 필드를 얻을 : A로 그룹에 결과를는 MySQL의

A,B,C 
2,5,6 
2,8,5 
3,4,7 
3,4,8 

내가 원하는, 그리고 최대 C의 값을 선택합니다. 그것에 대한 쿼리는 다음과 같습니다.

SELECT A, MAX(C) FROM table GROUP BY A 

내 질문은 어떻게 max (c) 값 옆에있는 B 값을 검색 할 수 있습니까? 동일한 쿼리에서이 작업을 수행 할 수 있습니까? 아니면 첫 번째 쿼리를 실행 한 후에 조인 쿼리가 필요하고 B 필드를 찾을 수 있습니까?

감사합니다.

답변

1

이 시도 :

select A,(select B from Table1 t1 where t1.A=t2.A and T1.C=T2.C) B ,MAX(c) C 
from Table1 T2 group by A; 

FIDDLE DEMO

+1

상관 관계가있는 하위 쿼리는 매우 비쌉니다. – eggyal

1
select * 
from table1 t 
join 
    (SELECT A, MAX(C) as C 
    FROM table1 GROUP BY A)a 
on t.A=a.A 
and t.C=a.C 
+0

그래 난이 .. 잘 알고 있어요 그래서 방법은 두 번 검색하고 가입 할 필요없이, 하나 개의 쿼리가없는이? –

+0

@ n00bprogrammer : 단일 검색으로 얻을 수 있다고는 생각하지 않습니다. –

1

이것은 groupwise maximum으로 알려져 있습니다. 그것을 얻으려면 결과를 테이블에 다시 합치셔야합니다 :

SELECT * FROM table NATURAL JOIN (
    SELECT A, MAX(C) AS C FROM table GROUP BY A 
) t 
1

선택한 열에 추가 할 수 있지만 그룹화해야합니다. 그렇지 않으면 결과가 불확실합니다.

SELECT A, B, MAX(C) 
FROM table 
GROUP BY A, B