동일한 최대 점수로 두 번 이상 득점 한 경우에도 플레이어 당 하나의 결과 만 원한다고 가정합니다.또한 각 플레이어가 처음 반복 할 때 자신의 성적이 최상이라고 생각한다고 가정합니다.
몇 가지 방법이 있습니다.
이
SELECT T3.* FROM table1 AS T3
JOIN (
SELECT T1.user, T1.score, MIN(scoredate) AS scoredate
FROM table1 AS T1
JOIN (SELECT user, MAX(score) AS score FROM table1 GROUP BY user) AS T2
ON T1.user = T2.user AND T1.score = T2.score
GROUP BY T1.user
) AS T4
ON T3.user = T4.user AND T3.score = T4.score AND T3.scoredate = T4.scoredate
결과 : 내가 사용
1, '2010-01-01 17:00:00', 50, 'Much better'
2, '2010-01-01 14:00:00', 100, 'Perfect score'
테스트 데이터를 테스트하려면 :
여기
SELECT user, scoredate, score, notes FROM (
SELECT *, @prev <> user AS is_best, @prev := user
FROM table1, (SELECT @prev := -1) AS vars
ORDER BY user, score DESC, scoredate
) AS T1
WHERE is_best
은 일반 SQL을 사용하는 일반적인 방법 : 다음은 MySQL의 특정 방법이다
CREATE TABLE table1 (user INT NOT NULL, scoredate DATETIME NOT NULL, score INT NOT NULL, notes NVARCHAR(100) NOT NULL);
INSERT INTO table1 (user, scoredate, score, notes) VALUES
(1, '2010-01-01 12:00:00', 10, 'First attempt'),
(1, '2010-01-01 17:00:00', 50, 'Much better'),
(1, '2010-01-01 22:00:00', 30, 'Time for bed'),
(2, '2010-01-01 14:00:00', 100, 'Perfect score'),
(2, '2010-01-01 16:00:00', 100, 'This is too easy');
사용자가 두 개의 동등한 점수를 갖는 경우 최대, 당신은 둘 다 반환하거나 그들 중 하나를 원하십니까? 후자라면, 어느 쪽인가? –