1

我有一个表,我想将一些数据复制回同一个表,其中两列被更改:

例如:

TableMusic

titleid   musicid  tap_id            value

1234         1      3                 this is music
1324         1      3                 this is music test

我希望将 titleid 和 value 写回到同一个 table 与 musicid=3

这里的索引列是titleid,musicid

我已完成以下脚本,但出现错误:尝试在具有唯一索引“pk_tablemusic”的对象“tablemusic”中插入重复的键行

insert into tablemusic (titleid, musicid, value )
  select titleid, 3, value
  from tablemusic
  where musicid=1

我在这里做错了什么?有人可以想出一个干净的脚本来完成工作。

以下是我的数据库中一个 titleID 的摘录:

titleid   musicid    tap_id              value

462847        1        3               this is my music value 
462847        2        1    
462847        3        1    
462847        4        1     

这对于所有 titleid 都是一样的。现在我想做的是将值从musicid = 1复制到musicid = 3,并且有时将tap_id更改为3。我希望这足以清楚我想要实现的目标

最终结果想要达到:

titleid musicid tap_id 值

462847        1        3               
462847        2        1    
462847        3        3               this is my music value 
462847        4        1     
4

2 回答 2

0

复杂性在于存在一些记录,因此尝试简单的插入会复制密钥并且您会收到错误。你在这里要做的就是把查询分成两个prts

  1. 更新存在的 musicid = 3 行
  2. 插入音乐 id=3 不存在的行
于 2012-12-30T14:29:55.007 回答
0

这是基于上面马克回答的脚本,有一些更改。谢谢马克-你是我的英雄。

首先我运行了这个脚本:

从音乐 ID=3 的 tablemusic 中删除

在上述之后,我运行了以下脚本:

插入 tablemusic (titleid, musicid, tap_id, value) select titleid, 3, 3, value from tablemusic
where musicid=1

这给了我想要达到的结果,如上面的问题所示。

于 2012-12-31T07:43:04.453 回答