我有tableA
存储有关用户的信息,我们假设已经有一个用户(UserA
)保存在表中,我想创建第二个用户(UserB
)复制UserA
拥有的数据。
我会做这样的事情:
Insert into tableA (userID, switch, plateType, groupVal, brokeage)
Select 'UserB', switch, plateType, groupVal, brokeage
from tableA
where userID = 'UserA';
没关系。
现在有时我必须阅读UserA
所拥有的数据,并使用它更新UserB
,但需要在上面的同一查询中执行此操作,因此我需要使用重复键。
我写过这篇但是没有用,我一直在研究,但找不到我需要的答案:
Insert into tableA (userID, switch, plateType, groupVal, brokeage)
Select 'UserB', switch, plateType, groupVal, brokeage
from tableA
where userID = 'UserA'
on duplicate key
Update tableA brokeage = (Select brokeage
from tableA
where userID = 'UserA')
where userID = 'UserB';
如果有人能看出这有什么问题,我将不胜感激。
答案 0 :(得分:1)
使用此:
Insert into tableA (userID, switch, plateType, groupVal, brokeage)
Select 'UserB', switch, plateType, groupVal, brokeage
from tableA
where userID = 'UserA'
on duplicate key Update brokeage = (
Select brokeage
from tableA
where userID = 'UserA');
查看更新结构,它将更新重复行,无需精确确定tablename的位置。