• ベストアンサー

DISTINCTについて

こんにちは。質問させて下さい。 重複レコードを除くデータを取得する際、 DISTINCT キーワードを使用しますが 重複レコードを取得したい場合はどのようにすれば よいのでしょうか? 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.4

こんにちわ。 #1, #3 のmuyoshid です。 #3 のSQL を確認してみましたが、ORA-913 が出ちゃいました。 そんな訳で、インライン・ビューで確認してみました。 select * from test; SQL> select * from test;     F_A    F_B    F_C ---------- ---------- ----------      1     2     3      1     2     3      2     3     4      2     3     4      3     4     5 SQL> select v.f_a, v.f_b, v.f_c from (Select f_a, f_b, f_c, count(*)   from test group by f_a, f_b, f_c having count(*) > 1) v;     F_A    F_B    F_C ---------- ---------- ----------      1     2     3      2     3     4

その他の回答 (3)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.3

こんにちわ。 #1 のmuyoshid です。 > 取得するフィールドは > f_a, f_b, f_c の3つで > この全てのフィールドにおいて > 重複があった場合のレコードを取得したいと考えています。 確認した訳ではありませんが、以下のSQL 文でどうでしょう? Select f_a, f_b, f_c from 表名  where (f_a, f_b. f_c) IN (   select f_a, f_b, f_c, count(*) from 表名    group by f_a, f_b, f_c    having count(*) > 1);

  • karon24
  • ベストアンサー率40% (8/20)
回答No.2

No.1さんの回答を改良した形ですが、 SELECT * FROM 表名 WHERE KEY名 IN ( SELECT KEY名 FROM 表名 GROUP BY KEY名 HAVING COUNT(*) > 1 ) こうすればKEY名の列の値が重複しているレコードの 全列を取得することができますよ。

653
質問者

補足

早速の返信ありがとうございました。 基本的に問題はありませんが、 少々私の説明不足がありました。 取得するフィールドは f_a, f_b, f_c の3つで この全てのフィールドにおいて 重複があった場合のレコードを取得したいと考えています。 宜しくお願いいたします。

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 Select key, count(*) from 表名 group by key having count(*) > 1; でどうでしょうか?

653
質問者

補足

早速の返信ありがとうございました。 基本的に問題はありませんが、 少々私の説明不足がありました。 取得するフィールドは f_a, f_b, f_c の3つで この全てのフィールドにおいて 重複があった場合のレコードを取得したいと考えています。 宜しくお願いいたします。

関連するQ&A