2012-04-25 95 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