我想将 Gmail 中的记录导入表中,并且我不需要每个帐户都重复。
描述:
我有一个名为 list 的表,其定义如下:
id int(11),
account_id int(11),
email varchar(255),
phone varchar(30),
primary key(id),
FOREIGN KEY (account_id) REFERENCES accounts (id)
此表包含不同帐户的记录,并且可以认为一封电子邮件对两个或多个帐户有效。这意味着电子邮件可以在表中重复,但每个 account_id 只能出现一次。
我从 Gmail 中导入了我的联系人(超过 700 个联系人,其他用户可能有更多)。
挑战:
我可以选择为每条记录运行两个查询(一个用于检查电子邮件或电话是否存在,第二个用于插入记录),在我的情况下是 1,400 个 SQL 查询,以使我能够插入所有导入的记录,确保每个记录没有重复列表中的 account_id。
我查看了 MySQL IGNORE 和类似的关键字,如 ON DUPLICATE KEY UPDATE 但它们似乎在这种情况下不起作用,因为我无法使电子邮件和电话列唯一,因为它们可能包含重复的内容。
插入这 700 条记录的最佳方法是什么,以确保每个 account_id 不会重复电子邮件和电话,而无需运行 1,400 次查询?
问题更新:
我不认为 INSERT IGNORE 可以在这里工作,原因如下:
- 我无法将电子邮件和电话设为唯一列
- 电话号码可能为空,但带有电子邮件条目,这可能会破坏独特的模式
问题说明
我有两个办公室使用该表来存储他们的客户记录。有人可以成为两个办事处的客户。这意味着他的记录可以在表中出现两次,但对于表中的每个 account_id 只能出现一次。现在的挑战是向表中插入几条记录,以确保记录不会针对每个 account_id 重复。