テーブル内の行を同じテーブルにコピーしたいが、一意の値を変更したい (そのため、一意の重複は得られない)。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 は、ID 列の X と Z が異なるため、_YYYY と同じにすることができますが、新しい XXXXXXXXXXXXXXX と ZZZZZZZZZZZZZZZ を ID の一部にします。また、XXXXXXXXXXXXXXX ID または ZZZZZZZZZZZZZZZ ID で一意である必要があるため、NAME を変更したいと考えています。(X ID には 1 つの名前があり、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 を作成することです。