【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

こんにちは。質問させて下さい。

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

A 回答 (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
    • good
    • 0

こんにちわ。


#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);
    • good
    • 0

No.1さんの回答を改良した形ですが、



SELECT *
FROM 表名
WHERE KEY名 IN (
SELECT KEY名
FROM 表名
GROUP BY KEY名
HAVING COUNT(*) > 1
)

こうすればKEY名の列の値が重複しているレコードの
全列を取得することができますよ。

この回答への補足

早速の返信ありがとうございました。
基本的に問題はありませんが、
少々私の説明不足がありました。

取得するフィールドは
f_a, f_b, f_c の3つで
この全てのフィールドにおいて
重複があった場合のレコードを取得したいと考えています。
宜しくお願いいたします。

補足日時:2003/01/31 13:49
    • good
    • 0

こんにちわ。



Select key, count(*) from 表名
group by key
having count(*) > 1;
でどうでしょうか?

この回答への補足

早速の返信ありがとうございました。
基本的に問題はありませんが、
少々私の説明不足がありました。

取得するフィールドは
f_a, f_b, f_c の3つで
この全てのフィールドにおいて
重複があった場合のレコードを取得したいと考えています。
宜しくお願いいたします。

補足日時:2003/01/31 13:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す