2014-03-03 6 views
0

내 테이블 lools과 같이 가장 높은 $의 COL2와 DISCTINCT $의 COL1를 GET 다음에 관련된 가장 높은 var와 나에게 열 name의 DISCTINCT 이름을 줄 것이다 나는 MYSQL 쿼리를 찾고 있어요MYSQL :

name | var 
---------------- 
Joe  | 3 
Liz  | 1 
Liz  | 4 
Joe  | 2 
Peter | 3 
Joe  | 7 
Liz  | 2 

name. 그래서, 위의 예를 들어, 내가

Joe | 7 
Liz | 4 
Peter | 3 

내 시도 찾던했다 : 나는, 너무,

SELECT DISTINCT name, var 

또는

SELECT DISTINCT(name), var 

을 시도

SELECT name, var 
FROM table 
GROUP BY name 
ORDER BY var DESC 

그러나 그것들과 나는 뚜렷한 조합을 가지고있다. 이름, var

어떤 아이디어?

답변

2

당신은 GROUP BY 당신이 원하는 것을 얻을 수있는 집계 함수 MAX()을 사용해야합니다.

1
SELECT NAME, MAX(VAR) as var FROM XYZ GROUP BY NAME 

--- 예 : 당신은 이제 함수는 GROUP BY의 결과는 다음을 얻을 것이다 그룹화 기능을 사용 후

Name | var 
Mustafa 6 
Tim  4 
Tim  7 
Joey  3 
Tim  5 
Joey  8 
Mustafa 12 

SELECT NAME, VAR FROM XYZ 있습니다. 다른 열과 해당 값은 신경 쓰지 않습니다. 여기에 임의의 숫자가있을 수 있습니다.

SELECT NAME, VAR FROM XYZ GROUP BY NAME 

Name | var 
Tim  5 
Joey  3 
Mustafa 12  <-- only this record ok?! 

---- 이제 우리는 "var"필드에 MAX()을 사용합니다. 그래서 우리 그룹 내의 모든 레코드를 항상 MAX() 값으로 검색합니다. 원하는 경우 MAX() Value에 대한 Order 문을 추가 할 수 있습니다.

SELECT name, MAX(var) as var 
FROM table 
GROUP BY name 
ORDER BY name ASC 

... ORDER BY 절은이 경우 선택 사항입니다 : (ORDER BY MAX(VAR))

SELECT NAME, MAX(VAR) as var FROM XYZ GROUP BY NAME 

Name | var 
Tim  7 
Joey  8 
Mustafa 12 
+0

을 시도합니다. – Barmar

+0

이 답변에 몇 가지 설명을 추가 할 수 있습니까? 코드 전용 답변은 일반적으로 권장되지 않습니다. –

+0

@CorleyBrigman이 (가) 자세한 내용을 추가했습니다. :) 조금 나아 졌으면 좋겠다. – creativeby

2

는`GROUP BY`를 사용할 때`DISTINCT` 필요하지 않습니다이

select name, max(var) as maxvar from Table1 
group by name 
ORDER BY maxvar DESC 

DEMO HERE