我有一张这样的表
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
答案 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也不能有两个条目。因为您有一个与两个字段结合的唯一约束。