たとえば、TABLEAというテーブルの’Field1’,’Field2’に以下のように重複したデータが入っているとする。
このなかで'Field2'で値が重複している列のみをSELECTしたい。| Field1 | Field2 | | 001 | aaa | | 002 | bbb | | 003 | ccc | | 004 | ddd | | 005 | aaa | | 006 | bbb |
まず、'Field2'の重複している値のみを取り出すためには以下のように GROUP BY と HAVING を使って SELECT する。
select Field2 from TABLE_A
group by Field2 having COUNT( Field2 ) > 1
さらに、上記で取得した値を含んでいる列をすべて取得する。このときINを使う結果: | Field2 | | aaa | | bbb |
select Field2 from TABLE_A where Field2 in
(select Field2 from TABLE_A
group by Field2 having COUNT( Field2 ) > 1)
結果: | Field1 | Field2 | | 001 | aaa | | 002 | bbb | | 005 | aaa | | 006 | bbb |