2010-08-12 9 views
0

두 필드가 고려 될 때 MAX() 행을 가져 와서 그 중 하나를 우선 적용하는 방법이 있습니까? 예를계층 적 MAX

를 들어
ID  Column_A  Column_B 
---------------------------- 
1  1    3 
2  3    2 
3  2    2 
4  3    1 

는 Column_B에 모두 ID의 2와 4는 Column_A에 MAX를하기 때문에

ID  Column_A  Column_B 
---------------------------- 
2  3    2 

를 반환하지만, # 2 "승리"겠습니까. 내가 의사에, 어떻게이 쿼리를하고 싶습니다 무엇

:

If (It's the MAX on A, tied with nothing) 
    Return it 
Else If (It's tied for MAX on A and it's MAX [or tied] on B) 
    Return it 

답변

1

당신은 시도 할 수 ...

SELECT * 
    FROM mytable 
    ORDER BY Column_A DESC, Column_B DESC 
    LIMIT 1; 

(I 제대로 질문을 이해 경우).

Matthew Purdon이 친절하게 제안했습니다.

+0

WHERE 또는 HAVING 절에 넣을 수있는 조건이 있습니까? 때문에 여러 행이 필요한 다른 쿼리 내부에 사용하고 있습니다. – babonk

+0

'FROM' 다음과'ORDER BY '앞에'WHERE' 절을 넣을 수 있습니다. 이것을 다른 쿼리에서 사용한다면'LIMIT' 절을 제거 할 수 있습니다. GROUP BY 절이 없으면 HAVING을 사용할 수 없으며 문제의 설명에 나타나는 부분 중 하나를 볼 수 없습니다. –

+1

그가 원하는 MAX이므로 다음과 같아야합니다. ORDER BY Column_A DESC, Column_B DESC –