我有跨三个表的数据。我正在尝试执行将数据从一个用户移动到另一个用户的操作 - 某些数据可能不存在,并且目标可能已经存在并且需要被覆盖。这是我所拥有的:
UPDATE Table1 t1
LEFT JOIN Table2 t2 USING (UserName)
LEFT JOIN Table3 t3 USING (UserName)
SET t1.UserName = @newUser, t2.UserName = @newUser, t3.UserName = @newUser
WHERE t1.UserName = @oldUser
这工作正常,除非表中已经存在具有新用户名的数据。我得到(如您所料)重复键错误。是否有任何解决方案可以将其保存在单个 SQL 语句中?我本质上想模仿 INSERT...ON DUPLICATE UPDATE 的功能,但使用更新语句代替。这是可行的,还是我需要一个单独的语句来首先删除任何现有条目?