- ベストアンサー
DISTINCTについて
こんにちは。質問させて下さい。 重複レコードを除くデータを取得する際、 DISTINCT キーワードを使用しますが 重複レコードを取得したい場合はどのようにすれば よいのでしょうか? 宜しくお願いいたします。
- みんなの回答 (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)
こんにちわ。 #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.1さんの回答を改良した形ですが、 SELECT * FROM 表名 WHERE KEY名 IN ( SELECT KEY名 FROM 表名 GROUP BY KEY名 HAVING COUNT(*) > 1 ) こうすればKEY名の列の値が重複しているレコードの 全列を取得することができますよ。
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 Select key, count(*) from 表名 group by key having count(*) > 1; でどうでしょうか?
補足
早速の返信ありがとうございました。 基本的に問題はありませんが、 少々私の説明不足がありました。 取得するフィールドは f_a, f_b, f_c の3つで この全てのフィールドにおいて 重複があった場合のレコードを取得したいと考えています。 宜しくお願いいたします。
補足
早速の返信ありがとうございました。 基本的に問題はありませんが、 少々私の説明不足がありました。 取得するフィールドは f_a, f_b, f_c の3つで この全てのフィールドにおいて 重複があった場合のレコードを取得したいと考えています。 宜しくお願いいたします。