2011-09-22 135 views
0

我想选择组的最大行,但我希望查询返回该行中的其他列。我知道MAX()如何返回组中最大的整数,但我不知道如何获得最大结果的其他列。从组中选择最大元素列

在本例中,我想有一个选择从每个group最大userId但返回

Users 
groupId | userId | name 
---------------------- 
1  | 1  | mike 
1  | 2  | dave 
2  | 3  | bill 
2  | 4  | steve 

我想要查询的输出是用户标识和名称查询

groupId | userId | name 
----------------------- 
1  | 2  | dave 
2  | 4  | steve 

我知道我可以做

select groupId, max(userId) 
from Users 
group by groupId; 

,然后做用户再次查询子查询。我只是想看看是否有更好的方法。

如果它的事项,我使用的是MySQL

回答

3

试试这个

select * from users 
join (select groupId, max(userId) as maxU from Users group by groupId) xx 
on xx.groupId=users.groupId and users.userId=xx.maxU 
+0

的子查询确实,虽然最好的方法是什么?这是我希望避免的 – Mike

+0

你为什么要避免子查询?检查计划,我想你会发现这是非常高效的SQL – Sparky

+0

你需要加入子查询,没有其他办法。 –