• ベストアンサー

SQLの重複選択について

こんばんわ 以下のカードテーブルから、重複しているカードidの個数をカウントし、そのカウント分だけ、ほかの重複カードテーブルにもっていきたいです。以下のように重複してない'11111100'以外をもっていく。 処理の手順としては、以下のようになります。 1.カードテーブルの重複しているカードの個数をカウントする。   今回は、'11111200'が2つ、'11111300'が3つで、計5個。   もしくは、重複しているカードだけ抽出する。 2.1の5個を引数にして、重複カードテーブルに5レコード分   代入する。 カードテーブル カードid 名前 期限 11111100 yano 2006/10 11111200 sano 2006/10 11111200 mayu 2006/10 11111300 saka 2006/10 11111300 koi 2006/10 11111300 mai 2006/10     ↓ 重複カードテーブル 11111200 sano 2006/10 11111200 mayu 2006/10 11111300 saka 2006/10 11111300 koi 2006/10 11111300 mai 2006/10

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

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

こんにちわ。 動作確認していませんが、こんな感じでどうでしょうか? Insert into 重複カードテーブル  select * from カードテーブル   where id in (select id from (select id, count(*) from カードテーブル group by id having count(*) > 1));

yano-kouichi
質問者

お礼

成功しました。 ありがとうございます。 感謝です。

yano-kouichi
質問者

補足

早速の回答ありがとうございます。 明日やってみます。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

自己結合でもよいかも知れません。 select distinct a.カードid,a.名前,a.期限 from カードテーブル a inner join カードテーブル b on (a.カードid=b.カードid and a.rowid!=b.rowid); 自分自身を結合し、rowidで同レコードを除外しております。 結果が積になるので、distinctを使って重複をなくしております。 (group by句でも問題ないと思いますが) 参考になればと思います。

すると、全ての回答が全文表示されます。

専門家に質問してみよう