我想將我的表中的行復制到同一個表,但更改唯一值(所以我沒有得到唯一的重複項)。使用MS SQL Server 2008的選擇並插入(複製具有部分唯一值的行)
表例如
ID NAME POS TYPE DATA
XXXXXXXXXXXXXXX_TTTT Something Hefty 0 01DAT 2008-09-29
XXXXXXXXXXXXXXX_WWWW Something Hefty 2 01RAT Random txt
ZZZZZZZZZZZZZZZ_YYYY Something Else 1 01DAF Random value
無列有任何按鍵,所有列是VARCHAR數據類型。
現在我想要做的是選擇這些行並插入它們(如複製粘貼ish的東西),但我想保留_YYYY,_TTTT和_WWWW(它們是替代品,並且對於每個X或Z ID都是唯一的 - 這意味着_TTTT可以與_YYYY相同,因爲X和Z是不同的)在ID列中,但是創建新的XXXXXXXXXXXXXXX和ZZZZZZZZZZZZZZZ部分ID。另外我想更改名稱,因爲它必須是唯一的XXXXXXXXXXXXX ID或ZZZZZZZZZZZZZZZ ID。 (該X ID有一個名字和Z ID有另一個。)
這裏是我嘗試使用(其不完全的,因爲我不能算出它完全地出)
insert into Table_name(ID,NAME,POS,TYPE,DATA)
select 'XXXXXXXXXXXXXXX'+substring(ID,15,5), NAME+'(Copy)',POS,TYPE,DATA
from Table_name where NAME='Old name' or NAME='Old name 2'
的「老字號」的聲明和'舊名稱2'部分是能夠選擇我想要複製的NAME(大部分時間超過5次)。
所以我需要的幫助是爲每個名稱創建新的唯一XXXXXXXXXXXXXXX和ZZZZZZZZZZZZZZZ ID。
您可以發佈預期的輸出嗎? – 2013-03-15 11:07:57
你能改變餐桌設計嗎?如果是將表格ID分成兩列。從你的描述看來,表格並沒有完全標準化。如果沒有,您可以在ID的第一部分使用帶'newid()'的GUID – Claude 2013-03-15 11:16:21