我正在尝试编写一个 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