我有一个外键的表,我想合并重复的记录。mysql更新与重复密钥更新
我的表看起来像这样:
user_id | object_id
表是一个两列的唯一键,所以不能重复。
我的查询看起来是这样的:
UPDATE user_object SET object_id = merge_obj_id WHERE object_id = old_object_id
这工作得很好,直到有连接到两个旧的对象和merged_object用户。这会导致重复。我卡住了,我可以想办法做到这一点与多个查询和对象操作,但我真的很想在SQL中做到这一点。
更新: 这可能工作?
INSERT INTO user_object (user_id,merge_object_id) SELECT user_id FROM user JOIN
user_object ON user.user_id = user_object.user_id WHERE object_id = old_object_id ON
DUPLICATE KEY (DELETE user_object WHERE user_object.user_id = user_id AND
user_object.user_id = old_object_id);`
UPDATE: 尝试这样做:
INSERT user_object(USER_ID,的object_id) 选择12345作为的object_id,user.user_id作为USER_ID FROM用户 JOIN user_object ON user.user_id = user_object.user_id
WHERE user_object.object_id = 23456
但它给我这个错误:
无法添加或更新子行:外键约束失败(yourtable
。 user_object
,约束FK_user_object_user_idx
外键(user_id
)参考文献user
(user_id
))
我想,一个早已但我没有USER_ID插入。我可以得到它,但它需要更多的查询。我拥有的唯一两位数据是merged_into_id和old_object_id。所以我不能做插入,因为我错过了另一个独特的关键。 – busbina 2012-03-02 21:08:12