2011-06-09 24 views
1

我有一個表像這樣的MySQL更新查詢,合併兩個值

USER | DATA 
---------------- 
User1 | 123 
User1 | 456 
User2 | 456 
User3 | 123 
User4 | 789 

和我對用戶數據的唯一約束。現在我想全部替換「456」與「123」,所以最後我不得不

USER | DATA 
---------------- 
User1 | 123 
User2 | 123 
User3 | 123 
User4 | 789 

我真的認爲,這將是容易的,u_U任何想法如何進行呢?任何幫助,將不勝感激=)

Thxs

回答

1
UPDATE IGNORE yourtable SET `data`=123 WHERE `data`=456 

不是很難了吧。

但你要如何處理這樣的場景:

USER | DATA 
-------------- 
userx | 123 
userx | 456 

+0

'UPDATE IGNORE'我知道它是什麼這個簡單..我猜的更新後,我不得不刪除包含'456',然後所有行我會繼續我的快樂方式Thxs – pleasedontbelong 2011-06-09 13:36:17

0

如果你有一個唯一的約束,你不能有兩個用User1 - 123的條目。所以你最後的結果是正確的。用戶2 - 456也不能有兩個條目。原因是您有與兩個字段結合的唯一約束。

2

「隨着忽略關鍵字,更新語句不能使用,即使在更新過程中發生錯誤中斷。重複鍵衝突發生時不會更新該行」

所以, 更新任何行那會不違反獨特的約束。 如果任何行會,只是刪除它們

UPDATE IGNORE Table SET data=123 WHERE data=456 
DELETE FROM Table WHERE data=456