질문에 의해 '고전'MySQL의 맥스/그룹을 가지고있어 여기 내 기본 테이블 구조입니다.Mysql 최대 쿼리 그룹에
id | userid | username | date | score
1 | 1111 | joe | 2012-05-16 | 1000
2 | 2222 | john | 2012-03-17 | 2000
3 | 3333 | jill | 2012-02-11 | 3000
4 | 2222 | john | 2012-12-25 | 5000
5 | 3333 | jill | 2012-04-08 | 4000
6 | 1111 | joe | 2012-06-17 | 1000
7 | 1111 | joe | 2012-01-14 | 500
8 | 2222 | john | 2012-06-29 | 6000
9 | 4444 | bill | 2012-08-08 | 4000
각 사용자의 최고 점수를 얻고 싶습니다. 각 사용자는 결과에 단 하나의 점수 만 표시해야합니다. 사용자의 가장 높은 점수 번 (예 : ID를 1 & 6) 이상 나타나는 경우
My desired result is
id | userid | username | date | score
8 | 2222 | john | 2012-06-29 | 6000
9 | 4444 | bill | 2012-08-08 | 4000
5 | 3333 | jill | 2012-04-08 | 4000
6 | 1111 | joe | 2012-06-17 | 1000
는, 가장 최근의 날짜가 표시되어야합니다.
이 내 현재 쿼리
id | userid | username | date | score
8 | 2222 | john | 2012-06-29 | 6000
9 | 4444 | bill | 2012-08-08 | 4000
5 | 3333 | jill | 2012-04-08 | 4000
6 | 1111 | joe | 2012-06-17 | 1000
1 | 1111 | joe | 2012-05-16 | 1000
이 문제를 해결하는 방법에 대한 제안의 잘못된 결과를 반환
select s.*
from scores as s
inner join (
select userid, max(score) as max_score
from scores
group by userid
) t on s.userid = t.userid and s.score = t.max_score
order by score DESC, date DESC
입니까?
또한 사용자 ID와 사용자 이름 간의 관계가 일대일 관계가 아니라는 것을 언급해야합니다.
중첩 쿼리를 두 번 사용해야합니다. 이미 한 번 더 중첩 시키십시오. – zerkms