我正在尝试从数据库表(“结果”)中获取结果列表,但是,每个成员可能已经提交了多个结果,我希望检索他们的最佳时间。
下面的查询有效(尽管我不确定它是否有效),除非有来自同一个竞争对手的多个结果且得分相同的情况。(例如,2 号选手两次得分 32.15 秒)。在这种情况下,我为这个竞争对手获得了两行,而不是我想要的那一行。
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
任何解决该问题的建议都会受到欢迎。
编辑:根据要求的表格结构;
member_result (TABLE)
id int unsigned (10)
result_id int unsigned (10)
member_id int unsigned (10)
club_id int unsigned (10)
result (TABLE)
id int unsigned (10)
time decimal (6)
is50mPool BIT ()
date date ()
verified BIT ()
verified_date timestamp ()
verified_comment varchar (255)
hasEmailed BIT ()
enabled BIT ()
event_id int unsigned (10
示例问题:结果:id#1 for event#2,time 60 member_result:id#1,result_id 1,member_id 3 结果:id#2 for event#2,time 60 member_result:id#2,result_id 2,member_id 3
我只想返回一行,其中一个是 result_id - 目前两行都返回,因为最短时间相等。