電子書籍の厳選無料作品が豊富!

こんばんわ
以下のカードテーブルから、重複しているカード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

A 回答 (2件)

こんにちわ。



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

この回答への補足

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

補足日時:2006/12/13 00:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/13 22:08

自己結合でもよいかも知れません。


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句でも問題ないと思いますが)

参考になればと思います。
    • good
    • 0

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