我的 table 是:
╔════╦════════╦════════════╦════════════╦════════╗
║ ID ║ TESTID ║ SESSIONID ║ TOTALSCORE ║ USERID ║
╠════╬════════╬════════════╬════════════╬════════╣
║ 1 ║ 10 ║ 55cff3fbfs ║ 250 ║ 972 ║
║ 2 ║ 10 ║ 55cff3fbfs ║ 440 ║ 972 ║
║ 3 ║ 11 ║ 66fdf3fbfs ║ 500 ║ 972 ║
║ 4 ║ 11 ║ 66fdf3fbfs ║ 700 ║ 972 ║
║ 5 ║ 12 ║ 77ksfjskfs ║ 800 ║ 972 ║
║ 6 ║ 12 ║ 77ksfjskfs ║ 700 ║ 972 ║
║ 7 ║ 13 ║ 8fsfskffsf ║ 900 ║ 972 ║
║ 8 ║ 13 ║ 8fsfskffsf ║ 750 ║ 972 ║
╚════╩════════╩════════════╩════════════╩════════╝
我需要通过提供用户 ID 来获取 maxscore 完整行
结果将是:
id TestId sessionId TotalScore UserId
---|-----|------------|------------|---------
2 | 10 | 55cff3fbfs | 440 | 972
4 | 11 | 66fdf3fbfs | 700 | 972
5 | 12 | 77ksfjskfs | 800 | 972
7 | 13 | 8fsfskffsf | 900 | 972
请帮帮我......如何在 MYSQL 中编写查询/存储过程
最佳答案
子查询的想法是它为每个 TestID
获取最大的 totalScore
。然后将其结果连接到表本身,前提是它符合以下条件,即子查询中的 TestID
和最大 TotalScore
与原始值匹配表。
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT TestID, MAX(TotalScore) maxScore
FROM tableName
GROUP BY TestID
) b ON a.TestID = b.TestID AND
a.TotalScore = b.maxScore
输出
╔════╦════════╦════════════╦════════════╦════════╗
║ ID ║ TESTID ║ SESSIONID ║ TOTALSCORE ║ USERID ║
╠════╬════════╬════════════╬════════════╬════════╣
║ 2 ║ 10 ║ 55cff3fbfs ║ 440 ║ 972 ║
║ 4 ║ 11 ║ 66fdf3fbfs ║ 700 ║ 972 ║
║ 5 ║ 12 ║ 77ksfjskfs ║ 800 ║ 972 ║
║ 7 ║ 13 ║ 8fsfskffsf ║ 900 ║ 972 ║
╚════╩════════╩════════════╩════════════╩════════╝
关于mysql - 如何从表中获取最高分完整记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775524/