按类别和&amp ;;发出返回行内容数据和Max(得分)。圆形,使用分组

时间:2018-06-18 14:26:44

标签: mysql group-by

我希望通过课堂和课程为用户返回个人最佳状态。回合;但日期拍摄结果不正确。请帮助 - 太令人沮丧了!

SELECT 
    c.Class, 
    r.Round, 
    h.shootdate as 'Date Shot', 
    max(h.Score) AS 'Personal Best'
FROM history h, classes c, rounds r
WHERE c.id = h.classid AND r.id = h.roundid AND h.userid = 1
GROUP BY c.Class, r.Round

1 个答案:

答案 0 :(得分:0)

你可以在history表上使用自联接为每个classid和roundid选择一个每个用户得分最高的行

SELECT 
    c.Class, 
    r.Round, 
    h.shootdate as 'Date Shot', 
    h.Score AS 'Personal Best'
FROM history h
JOIN (
    SELECT classid, roundid, max(score) score
    FROM history
    WHERE userid = 1
    GROUP BY classid, roundid
) h1 ON h.classid = h1.classid AND h.roundid = h1.roundid AND h.score = h1.score
JOIN classes c ON c.id = h.classid
JOIN rounds r ON r.id = h.roundid
-- WHERE h.userid = 1 // not necessary

在您的查询中,您选择的shootdate不存在于组中,这就是为什么您没有得到正确的值,其中得分最大,也使用显式连接语法来关联您的表