每隔一段时间,我就会用那些回复我们 Craigslist 广告的人更新我们的研究招聘数据库。每个受访者都有一个唯一的respondentID
,这是主键。
有时,人们会多次回复这些 Craigslist 广告。我认为我们的数据库中可能有重复的人,这很糟糕。
我想将我所有招聘表的主键从respondentID
更改为Email
,这将防止重复并更容易查找信息。我的数据库中可能已经有重复的电子邮件记录,如果有,我需要清理它。
这是我的三个招聘表的当前架构:
- 人口统计 - 包含类似的列
RespondentID (PK)
,Email
(我希望这是 PK)Phone
,等 - 流派 - 包含
RespondentID (PK)
,Horror
等列 - platform - 包含
RespondentID (PK)
,TV
等列。
我想在某个时候将所有三个表连接在一起,以便我们更好地了解某人。
以下是我的问题:
- 如何消除数据库中已有的重复受访者?(我可以判断它们是否重复,因为它们将具有相同的电子邮件值。)
- 鉴于我当前的架构,如何在不弄乱数据的情况下将我的数据库转换为以电子邮件作为主键?
- 转换到新架构后,在将 Craigslist 广告电子表格中的重复项添加到演示、类型和平台表之前,我可以使用什么流程删除它们?
以下是我对解决方案的想法:
创建备份表。将三个表连接起来,将大表导出到 Excel。在 Excel 中,使用数据过滤和条件格式查找重复条目,然后手动删除它们。不幸的是,我有 20,000 条记录会导致 Excel 崩溃。:( 主要问题是我不知道如何使用 SQL 删除表中的重复条目。(另外,如果我有两个来自 bobdole@republican.com 的条目,则应该保留一个条目。)你能想出一个涉及 SQL 和 Access 的更智能的解决方案?
在每条电子邮件记录都是唯一的后,我将创建新表,每个表都使用电子邮件作为主键。
当我想删除要导入的数据中的重复项时,我应该能够在 Excel 中轻松完成。接下来,我将使用此 SQL 命令在当前数据库和传入数据之间进行重复数据删除:
DELETE * from newParticipantsList WHERE Email in (SelectEmail from Demo)
我将尝试在 Access 的一个小测试表中复制我当前的体系结构,看看我是否能弄清楚。总的来说,我在SQL中加入表和删除数据的经验并不多,所以有点吓人。