2012-04-25 98 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但只能從兩個返回的第一行。

有什麼建議嗎?

Zolka

回答

0

使用聚合函數MAX

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

我已經嘗試過這一點,它返回最高score_round_1但我返回第一個名字。即它可能會返回John1-5和John3-5,這是不正確的。 – Zolka 2012-04-25 09:40:34

+0

@Zolka恐怕我不能得到你..你想還包括名字? – 2012-04-25 09:41:22

+0

是的,實際上我需要最高的score_round_1,它的名字,對不起,如果我不清楚。 – Zolka 2012-04-25 09:43:50

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 2012-04-25 10:47:06

0

這是簡單的

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

這不會返回組的最大記錄的正確行數據。 – Chris 2014-01-16 18:44:43