1

ラップタイム用の単純な MySQL テーブルがあります。以下で構成されています

  • プライマリ キー
  • トラックID
  • ユーザーID
  • ラップタイム
  • ラップステータス

基本的にラップタイムのトップ 10 を選択したいのですが、ユーザーごとに 1 つだけです。X トラックのラップタイムが 2 つある場合は、ベストタイムを取得したいと考えています。

私が走れば

SELECT * FROM tbl_lap_times ORDER BY lap_times ASC

両方のラップ タイムが表示され、ベスト タイムが一番上にあります。しかし、前述のように、ユーザーごとに 1 つのラップタイムのみが必要です。

私が走れば

SELECT * FROM tbl_lap_times GROUP BY users_id ORDER BY lap_times ASC

次に、最初のラップ タイムを取得します (これはベストラップ タイムではありません)。

助言がありますか?

4

2 に答える 2

0

機能を使ってみましたmin()か?

SELECT users_id, min(lap_times) FROM tbl_lap_times GROUP BY users_id

于 2012-11-08T13:35:47.250 に答える
0

を使用して集計する必要がありますMIN。このようなものは動作するはずです(テストされていません):

SELECT user_id, track_id, lap_status, MIN(lap_times) AS best_time
FROM tbl_lap_times
GROUP BY user_id, track_id, lap_status
ORDER BY best_time DESC
LIMIT 10
于 2012-11-08T13:35:52.310 に答える