0

考虑下表:

  A  |  B
-----|------
 123 |  1
 456 |  2
 123 |  5
 456 |  0
 789 |  3
 789 |  9
 123 |  6

我想得到以下输出:

  A  |  B
-----|------
 123 |  6
 456 |  2
 789 |  9

换句话说:对于 A 中每个相等的值,B 的最大值。

上面的初始表已经来自另一个只选择重复项的查询A

select A, B from tbl where A in (
  select A from tbl
  group by A
  having count(A) > 1
);

group我尝试将另一个ing 函数包装/集成max(B)到这个查询中,但没有成功。

如何获得所需的输出?

4

2 回答 2

1

也许我在这里很天真,但是:

SELECT tbl2.A, MAX(tbl2.B) FROM
(select A, B from tbl where A in (
     select A from tbl
     group by A
     having count(A) > 1
)) as tbl2
GROUP BY tbl2.A

似乎它应该工作。

于 2012-11-28T14:15:04.477 回答
1

只需使用最大值:

  select A, max(B) 
  from tbl
  group by A
  having count(A) > 1
于 2012-11-28T14:15:05.413 回答