Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql更新查询,合并两个值_Mysql_Unique Constraint - Fatal编程技术网

mysql更新查询,合并两个值

mysql更新查询,合并两个值,mysql,unique-constraint,Mysql,Unique Constraint,我有一张这样的桌子 USER | DATA ---------------- User1 | 123 User1 | 456 User2 | 456 User3 | 123 User4 | 789 我对用户数据有一个唯一的约束。现在我想用“123”替换所有的“456”,所以最后我会 USER | DATA ---------------- User1 | 123 User2 | 123 User3 | 123 User4 |

我有一张这样的桌子

USER   |   DATA
----------------
User1  |   123
User1  |   456
User2  |   456
User3  |   123
User4  |   789
我对用户数据有一个唯一的约束。现在我想用“123”替换所有的“456”,所以最后我会

USER   |   DATA
----------------
User1  |   123
User2  |   123
User3  |   123
User4  |   789
我真的认为这很容易,你知道怎么做吗?任何帮助都将不胜感激()

Thxs

没那么难

但您希望如何处理这种情况:

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

如果您有一个唯一的约束,那么用户1-123不能有两个条目。所以你最后的结果是正确的。用户2-456也不能有两个条目。因为您有一个与这两个字段组合的唯一约束。

“使用IGNORE关键字,即使在更新过程中出现错误,update语句也不会中止。不会更新发生重复键冲突的行。”

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

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

UPDATE IGNORE
我知道这一定是这么简单的事情。。我想在更新之后,我将不得不删除所有包含
456
的行,然后我将继续我的快乐之路Thxs
UPDATE IGNORE Table SET data=123 WHERE data=456 
DELETE FROM Table WHERE data=456