我正在尝试编写一个SQL查询,该查询将返回一列结果的ID号,其中每个团队只会以最佳时间出现。
从本质上讲,它是一个允许人们投入接力赛事的系统(比如有4名队员的游泳比赛),并且只会显示该队伍的最佳时间。
我唯一能想到的是在result.id上执行Group By并且有一个GROUP_CONCAT字段(member_result.member_id ORDER BY member_result.member_id)。然后,我可以对此进行分组,但后来我陷入困境。
建议非常欢迎。
另外,对于非中继事件,这是我正在使用的代码:
SELECT result_id FROM (
SELECT member_id,MIN(time) AS mintime
FROM result
JOIN member_result ON result.id = member_result.result_id
WHERE event_id = ?
GROUP BY member_id
ORDER BY mintime
) AS x
JOIN result ON result.time = x.mintime
JOIN member_result ON member_result.result_id = result.id AND member_result.member_id = x.member_id AND event_id = ?
GROUP BY member_result.member_id ORDER BY mintime