我想将表中的行复制到同一个表中,但更改唯一值(所以我不会得到唯一值的重复)。使用 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 数据类型。
现在我想做的是选择这些行并插入它们(就像复制粘贴一样),但我想保留 _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”部分是为了能够选择我要复制的名称(大多数时候超过 5 个)。
所以我需要的帮助是为每个名称创建新的唯一 XXXXXXXXXXXXXXX 和 ZZZZZZZZZZZZZZZ ID。