アスリートの 100 メートルと 200 メートルのレース時間を一覧表示するテーブルからデータを取得する SQL クエリがあります。クエリは、 に基づいて各選手のベスト レース タイムのみを取得します。athlete_id
また、レース タイムが 100 メートル タイムか 200 メートル タイムか ( event_code
) も知りたいと考えています。
したがって、ランナーは複数のレース タイムを持つことができますが、クエリは各イベントで各ランナーから最高のレース タイムのみを取得します。
問題は、アスリートがまったく同じベスト レース タイムを 2 回以上行った場合、クエリはそれらすべてのレース タイムを取得することです。クエリが 1 つの値のみを取得するようにするにはどうすればよいですか?
コードは次のとおりです。
select r.*
from result r
inner join (
select athelete_id, min(result_time) as FastestTime
from result
where event_code = 1
group by athelete_id
) rm on r.athelete_id = rm.athelete_id and r.result_time = rm.FastestTime