1

私はそのようなテーブルに2つの属性aとを持っていますbaさて、そのようなものを通過する多くのデータがあり、1つの値が複数の異なる値を持つすべてのレコードを選択したいと思いますb

たとえば、次の表の例から

   a    b
---------
   1    1
   1    1
   2    1
   2    2
   3    1
   4    1
   4    5
   4    1

選択したい

   a   b
--------
   2   1
   2   2
   4   1
   4   5

または、他の方法で不可能な場合は、(2つの結果行として)とだけ24、2番目のクエリでより具体的なデータを取得できます。

GROUP BYサブクエリを使用して、HAVINGおよびいくつかの構成を操作してみましたが、希望する結果に近づくものはありませんでした。私は本当にすべてのデータをフェッチして手動で処理したくありません。

それはおそらく本当に単純なことですが、私はそれに到達することができないので、これをどのように解決しますか?

4

1 に答える 1

3

単一のテーブルアクセス(同じ行bの特定の値ののすべての値を返す)の場合は、次のことを試してください。a

select a, group_concat(distinct b)
from yourtable
group by a
having count(distinct b) > 1

aとbの組み合わせごとに別々の行を返すには、次のことを試してください。

select distinct yt1.a, yt1.b
from yourtable yt1
join yourtable yt2 on yt1.a = yt2.a and yt1.b <> yt2.b

Exists変異体:

select distinct a, b
from yourtable yt1
where exists
(select 1
 from yourtable yt2
 where yt1.a = yt2.a and yt1.b <> yt2.b)
于 2013-02-08T17:13:13.907 に答える