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 に答える