1. ホーム
  2. sql

[解決済み] SQLテーブルのレコードをコピーして、新しい行のユニークIDを交換するにはどうすればよいですか?

2022-05-18 05:11:29

質問

この質問 は私が必要とするものに近いですが、私のシナリオは少し異なっています。ソーステーブルと宛先テーブルは同じで、プライマリキーはuniqueidentifier(guid)です。私がこれを試みるとき。

insert into MyTable
    select * from MyTable where uniqueId = @Id;

主キーをコピーしようとしているため、明らかに主キー制約違反が発生します。実際、私は主キーをコピーしたいわけではありません。むしろ、新しいキーを作成したいのです。さらに、特定のフィールドを選択的にコピーし、他のフィールドはNULLのままにしておきたいと考えています。さらに複雑なことに、私は元のレコードの主キーを取り、それをコピーの別のフィールド (PreviousId フィールド) に挿入する必要があります。

私はこれに対する簡単なソリューションがあることを確信していますが、それが何であるかを知るために十分な TSQL を知らないだけです。

どのように解決するのですか?

これを試してみてください。


insert into MyTable(field1, field2, id_backup)
    select field1, field2, uniqueId from MyTable where uniqueId = @Id;

指定されていないフィールドは、そのデフォルト値(定義されていない場合は通常NULL)を受け取る必要があります。