プロが教える店舗&オフィスのセキュリティ対策術

2つのテーブルを1つにするとき、
2つのテーブルに同じデータが含まれていたため、
重複データが、いくつか出来てしまいました。
まったく同じものです。
新しく出来たテーブルから、
同じものを、検索して、
一方を削除したいのですが、
どのような方法が、可能でしょうか。
(そもそも、重複となるデータを除いて、
2つのテーブルをひとつにする方法は、
あるでしょうか。)
よろしくお願いします。
ちなみに、データベースはAccessです。

A 回答 (5件)

重複といってもいろんなケースが考えられますね



全フィールドの内容が全く同じものなら
集計クエリあるいは固有のレコードを抽出するクエリ
をテーブル作成クエリに変えて新しいテーブルを作ればいいでしょう

中身が異なるフィールドがある場合はどれを残すのかの規則が必要です
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
(回答メール届かなかったので、
遅れてしまいました。)
集計クエリを使う方法でも、やってみたいと思います。
経験者の貴重な意見、非常に参考になります。
ありがとうございました。

お礼日時:2007/05/25 16:42

パフォーマンスは悪いかもしれませんが、


考えやすい方法としては、

すべてのフィールドのデータが同じものについては、
1レコードだけは残したい、ということであれば
すべてのフィールドでグループ化したクエリで、
テーブル作成すればよいのではないでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
(回答メール届かなかったので、
遅れてしまいました。)
#1の方と同じ方法ですね。
オーソドックスだと、この方法なの
かもしれません。
ぜひやってみたいと思います。
どうもありがとうございました。

お礼日時:2007/05/25 16:51

>一方を削除したいのですが


テーブルAからテーブルBに含まれるものを消したい
delete from A where EXISTS (select * from B where B.キー項目 = A.キー項目)

>そもそも、重複となるデータを除いて、
>2つのテーブルをひとつにする方法
insert into A select * from B
where NOT EXISTS (select * from A where A.キー項目 = B.キー項目)

accessの環境が無いので参考程度で。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
(回答メール届かなかったので、
遅れてしまいました。)
自分でもいろいろ考えましたが、
経験者の意見は、非常に参考になります。
2つのSQL両方試してみたいと思います。
勉強になりました。
ありがとうございました。

お礼日時:2007/05/25 16:49

#2です。



あ、テーブルの作成方法ではなくて、もう出来たテーブルから重複したデータの削除ですね(^-^;)

まずは、新しく作成したテーブル(重複したデータがあるテーブル)に
キーとなる列を追加する必要があると思います。
(名前はIDとかでオートナンバー型でいいと思います)

そして、
DELETE * FROM ABCテーブル
WHERE ID IN
(SELECT MAX(ID) FROM ABCテーブル GROUP BY ID以外の列を指定 HAVING COUNT(*) > 1);
っで、いけると思います。

最後に追加した列(ID)を削除する。
念のため、重複行がないか確認してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
(回答メール届かなかったので、
遅れてしまいました。)
テーブルの作成でも、間に合います。
No2の方法は、Accessならではで、
やってみようと思います。
No3のSQLも意味をよく理解してから、
やってみたいと思います。
どうもありがとうございました。

お礼日時:2007/05/25 16:46

DBとデータ量によって、やり方は違ってくると思いますが


私が最初に思いつくのが、SQLでサブクエリを使いINSERT文で移行する方法ですね。
ですが、今回はAccessということですし、2つのテーブルは全く同じ項目ではないかと思います。

・Access
・2つのテーブルは全く同じ
ということで、以下の方法が簡単なのではないでしょうか。
(PC性能にもよりますが、データ量が数千件・数万件の場合)

テーブルA
テーブルB
テーブルY(新テーブル)

1、新テーブルYの項目全てにキーを張る。
2、テーブルAをコピーしてテーブルYへ貼り付ける。
3、テーブルBをコピーしてテーブルYへ貼り付ける。
※テーブルBを貼り付けた時に、キーが設定されているので重複がある様だったら、貼り付けエラーになるので重複データは張り付かない。

勉強の為にSQL文を書きたいのであれば、サブクエリーとEXISTSで検索すればヒントになるかもしれません。
    • good
    • 0

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

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