按另一行的最大值选择行

时间:2014-11-18 21:17:02

标签: sql ms-access group-by max

我在Access中使用sql执行此操作...

之前可能已经回答过,但我不知道如何提出正确的问题,以便找不到解决方案。

我的表名为"表":

 attr_1  attr_2  attr3
 1       A       10
 1       B       5
 2       C       3
 3       D       7
 3       E       8
 3       F       11

我希望结果按attr_1分组,其中attr3具有最大值,同时来自同一行的attr_2。所以这就是我需要的结果:

 1      A       10
 2      C       3
 3      F       11

如果我不需要attr_2那么我会知道如何使用GROUP BY和MAX执行此操作,但我不知道如何在SQL中包含此attr_2声明得到想要的结果。

请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以在subqueryjoin中获得表中的最大值,以获取所有值。

SELECT attr_1, attr_2, attr3
FROM (
  SELECT attr_1, max(attr3) as maxAttr3
  FROM Table1
  GROUP BY attr_1 )T
JOIN Table1 T1
on T.maxAttr3 = T1.attr3
and T.attr_1 = T1.attr_1 

答案 1 :(得分:1)

根本不需要group by。您只想选择最近的行。假设值是唯一的,您可以这样做:

select t.*
from table as t
where t.attr3 = (select max(t2.attr3) from table as t2 where t2.attr_1 = t.attr_1);