2012-12-30 58 views
1

我有一個表,我想將一些數據複製回同一個表有兩列複製回同桌得到改變:的Sybase:用不同的ID

如:

TableMusic 

titleid musicid tap_id   value 

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

我希望titleid和值寫入回與MusicID提供相同的表= 3

這裏的索引列titleid,MusicID提供

我做了以下腳本,但去T時的錯誤:試圖插入重複鍵行對象'tablemusic具有唯一索引「pk_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  
+0

似乎是正確的,所以我會檢查你沒有dataid = 3的數據和索引是否正確 – Mark

+0

@mark:我確實有musicid = 3的數據,但它有不同的標題ID和不同的tap_id。現在我的目標是將musicid = 1的標題和值複製到musicid = 3。 – user726720

+0

問題是你的代碼應該工作,所以你給的一些細節是不正確的 – Mark

回答

0

的複雜性在於一些記錄存在,所以想一個簡單的插入複製了鑰匙,你會得到錯誤。你要在這裏做的是給查詢分解成兩個PRTS

  1. 更新與MusicID提供的行數= 3存在
  2. 插入行,其中音樂ID = 3不存在
+0

我需要走了 - 所以我不能做確切的SQL但 – Mark

+0

感謝馬克,這對於我解決這個問題的其他方式來思考這個問題很有用,並且很快會在此發佈我的解決方案。 – user726720

0

這裏是基於馬克的回答上面的腳本,並做了一些修改。謝謝馬克 - 你是我的英雄。

首先我跑此腳本:

從tablemusic刪除其中MusicID提供= 3

在上述過程之後,我跑下面的腳本:

插入到tablemusic(titleid,MusicID提供,tap_id,值) 選擇titleid,3,3,從tablemusic
值 其中MusicID功能= 1

這給我我想要爲ACHI結果如上面的問題所示。

+0

這將刪除一些recorsd,其中musicid = 3,沒有musicid = 1的地方是你想要的 – Mark

+0

是的,我首先用音樂ID = 3刪除,然後將它添加回來,將tap_id改爲3.它正在工作我想要 – user726720