- ベストアンサー
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 動作確認していませんが、こんな感じでどうでしょうか? Insert into 重複カードテーブル select * from カードテーブル where id in (select id from (select id, count(*) from カードテーブル group by id having count(*) > 1));
その他の回答 (1)
- naochancom
- ベストアンサー率61% (41/67)
自己結合でもよいかも知れません。 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句でも問題ないと思いますが) 参考になればと思います。
お礼
成功しました。 ありがとうございます。 感謝です。
補足
早速の回答ありがとうございます。 明日やってみます。 ありがとうございます。