ときどき、私は Craigslist の広告に反応した人たちで調査募集データベースを更新しています。respondentID
各回答者には、主キーである固有の が与えられます。
時々、人々はこれらの Craigslist 広告に複数回反応します。データベースに重複した人がいる可能性があると思いますが、これは悪いことです。
重複を防ぎ、情報を検索しやすくするためrespondentID
に、すべての採用テーブルの主キーを から に変更したいと考えています。Email
私のデータベースには重複した電子メール レコードが既にある可能性があり、重複している場合はこれをクリーンアップする必要があります。
3 つの募集テーブルの現在のアーキテクチャは次のとおりです。
RespondentID (PK)
人口統計 - 、Email
(これをPKにしたい)Phone
などの列が含まれています- ジャンル - 、 など
RespondentID (PK)
の列が含まれますHorror
- プラットフォーム - 、 など
RespondentID (PK)
の列が含まれます。TV
誰かをよりよく理解できるように、ある時点で 3 つのテーブルすべてを結合したいと考えています。
ここに私の質問があります:
- データベースに既にある重複した回答者を削除するにはどうすればよいですか? (同じ Email 値を持つため、重複しているかどうかはわかります。)
- 現在のアーキテクチャを考えると、データを台無しにすることなく、メールを主キーとして持つようにデータベースを移行するにはどうすればよいですか?
- 新しいアーキテクチャに移行した後、デモ、ジャンル、およびプラットフォーム テーブルに追加する前に、Craigslist 広告スプレッドシートの重複を削除するために使用できるプロセスは何ですか?
解決策についての私の考えは次のとおりです。
バックアップ テーブルを作成します。3 つのテーブルを結合し、大きなテーブルを Excel にエクスポートします。Excel では、データ フィルタリングと条件付き書式を使用して重複するエントリを見つけ、手動で削除します。残念ながら、Excel をクラッシュさせる 20,000 レコードがあります。:( 主な問題は、SQL を使用してテーブル内の重複エントリを削除する方法がわからないことです。(また、bobdole@republican.com によるエントリが 2 つある場合、エントリは 1 つ残るはずです。) SQL と Access を含むよりスマートなソリューション?
各電子メール レコードが一意になったら、それぞれが電子メールを主キーとして使用する新しいテーブルを作成します。
インポートしたいデータ内の重複を削除したい場合、Excel 内で簡単に実行できるはずです。次に、この SQL コマンドを使用して、現在のデータベースと受信データの間で重複を排除します。
DELETE * from newParticipantsList WHERE Email in (SelectEmail from Demo)
Access の小さなテスト テーブルで現在のアーキテクチャを複製し、それを理解できるかどうかを確認します。全体として、テーブルの結合や SQL でのデータの削除の経験があまりないので、少し怖いです。