我有一個外鍵的表,我想合併重複的記錄。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