2012-04-25 17 views
1

私はこのようなMySQLテーブルを持っています。MySQLクエリ:グループ内で最高の値を持つレコードを選択してください

| season_id | round_1 | names | score_round_1 
| 5   | 10  | John1 | 5 
| 5   | 10  | John2 | 3 
| 5   | 11  | John3 | 2 
| 5   | 11  | John4 | 5 

各round_1(10,11)グループで最高score_round_1のレコードを選択します。

この場合、最初と最後の行が選択されます。

GROUP BY round_1を使用しようとしましたが、2つのうち最初の行のみを返します。

アドバイスはありますか?

Zolka

答えて

0

使用集約関数MAX

SELECT names, MAX(score_round_1) GROUP BY round_1 
+0

である私はすでにこれを試みたが、それは最高のscore_round_1を返しますが、私は最初の名前を返します。すなわち、おそらくJohn1-5とJohn3-5が正しくないでしょう。 – Zolka

+0

@Zolka私はあなたを得ることができないのではないかと心配しています。名前も含めたいと思っていますか? –

+0

はい、実際に私は最高score_round_1を必要とし、それは名前です、私がはっきりしない場合は申し訳ありません。 – Zolka

0
SELECT * 
FROM table p1 
WHERE score_round_1 = (
SELECT MAX(p2.score_round_1) 
FROM table p2 
WHERE p1.round_1 = p2.round_1 ) ANDround_1 !=0 
+0

私は1つのテーブルしか持っていませんが、あなたのクエリには2つのテーブルp1とp2がありますか?明確にすることはできますか? – Zolka

0

これは単純な

select max(score_round_1), 
     name 
from score 
group by round_1 
+0

これは、グループの最大レコードの正しい行データを返しません。 – Chris

関連する問題