2

我正在尝试编写一个 SQL 查询,它将返回一列 ID 号作为结果,其中每个团队的人只出现在他们最好的时间。

本质上,它是一个允许人们为接力赛(例如有 4 个团队成员的游泳比赛)输入时间的系统,并且只会显示该团队的最佳时间。

SQL小提琴:

我唯一能想到的就是在 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
4

0 回答 0