使用select插入重复更新

时间:2014-01-27 13:58:07

标签: mysql

我有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';

如果有人能看出这有什么问题,我将不胜感激。

1 个答案:

答案 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的位置。