1

クエリの生成に問題があります (オンラインで SO を調べましたが、見つかりません)。2 番目の列のみが異なる異なる 2 つの列を選択したいと考えています。

理想的には、次のようになります。

SELECT DISTINCT colA, colB
FROM table
GROUP BY colA, colB

colbが異なるという条件で

たとえば、私が言ったことが明確でない場合に備えて、これが私がしてほしいことです

colA | colB
-----------
abc  |1
abc  |2
abd  |1
abf  |1
xyz  |1
asd  |2

SQLマジック

calA | colB
-----------
abc  |1
abc  |2

基本的に、colBが異なる行を削除します。

ありがとう!

4

5 に答える 5

3

サンプル出力に基づいて、colA複数の異なるcolB値がある場合にのみ値を含めているようです。次のようにできます。

SELECT colA, colB FROM table
WHERE colA IN (
  SELECT colA
  FROM table
  GROUP BY colA
  HAVING COUNT(DISTINCT colB) > 1)
于 2013-04-29T20:07:09.680 に答える
1

group by複数の B 値を持つ列 A の値を取得するには、having句で aを使用できます。

SELECT colA
FROM table
GROUP BY colA
having min(colB) <> max(colB)

join次に、何らかの形でこれを元のクエリに戻す必要があります。を使用したアプローチは次のinとおりです。

select *
from table
where colA in (SELECT colA
               FROM table
               GROUP BY colA
               having min(colB) <> max(colB)
              )

having比較をに置き換えることもできますが、一般的には/比較having count(distinct colB) > 1の方がパフォーマンスが良いと思います。min()max()

于 2013-04-29T20:06:41.537 に答える
0
select colA, colB
from table
where colA in (select colA from table group by colA having count(*) > 1)
order by colA, colB
于 2013-04-29T20:23:53.500 に答える