我试图将.csv文件中的(如果它不存在)插入到我的表中。我试过INSERT IGNORE和REPLACE。但是这些在这种情况下不起作用,所以我仍然有重复。那么当我插入时,我该怎么办才能防止重复?感谢。
这是我的代码:
ViewScoped
答案 0 :(得分:0)
如果您在UNIQUE INDEX
中的所有列上创建attributevalue
,则可以使用INSERT IGNORE
来防止重复。
如果你不能这样做,你可以在表格中使用LEFT JOIN
,这样你只能从temp_table
返回与attributevalue
中的行不匹配的行。
INSERT INTO attributevalue(object_id, object_tid, attr_id, string_value)
SELECT o.id, o.objtype_id, 9999, t.Mac_address
FROM temp_table AS t
JOIN object AS o ON o.name = t.name
JOIN attributevalue AS attr ON attr.object_id = o.id
LEFT JOIN attributevalue AS attr1
ON attr1.object_id = o.id
AND attr1.object_tid = o.objtype_id
AND attr1.attr_id = 9999
AND attr1.string_value = t.Mac_address
WHERE attr.attr_id = 9999
AND attr1.object_id IS NULL
答案 1 :(得分:0)
如果您正在使用索引,则ON DUPLICATE KEY UPDATE可能有效:
INSERT INTO attributevalue (object_id, object_tid, attr_id, string_value) VALUES (valueObjectId, ....) ON DUPLICATE KEY UPDATE string_value = 'value', ...
检查MySQL文档:https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html