2011-06-09 35 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