我想将我的表中的行复制到同一个表,但更改唯一值(所以我没有得到唯一的重复项)。使用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