我有一个包含3列的表格-id(pk),pageId(fk),名称。我有一个PHP脚本,它将大约5000条记录转储到表中,其中大约一半是重复的,具有相同的pageId和名称。pageId和名称的组合应该是唯一的。当我遍历php中的脚本时,防止重复项被保存到表中的最佳方法是什么?
第一步是在表上设置唯一键:
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name); 然后,当有重复项时,您必须决定要做什么。你应该:
忽略它?
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo"); 覆盖先前输入的记录?
INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "first") ON DUPLICATE KEY UPDATE (somefield = 'first')
INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "second") ON DUPLICATE KEY UPDATE (somefield = 'second') 更新一些柜台?
INSERT INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo") ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1) 分享来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。