mysql更新查询,合并两个值

时间:2011-06-09 13:20:15

标签: mysql unique-constraint

我有一张这样的表

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

我对User-Data有一个UNIQUE约束。现在我想用“123”替换所有“456”,所以最后我还有

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

我真的认为这很容易,你知道如何继续吗?任何帮助将不胜感激=)

Thxs

3 个答案:

答案 0 :(得分:2)

“使用IGNORE关键字,即使更新期间发生错误,更新语句也不会中止。发生重复键冲突的行不会更新”

所以, 更新任何不违反唯一约束的行。 如果有任何行,只需删除它们

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

答案 1 :(得分:1)

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

没那么难。

但是你想如何处理这种情况:

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

答案 2 :(得分:0)

如果您有一个唯一约束,则不能有两个条目与User1 - 123.所以您的上一个结果是正确的。用户2 - 456也不能有两个条目。因为您有一个与两个字段结合的唯一约束。