SQL Serverで同じテーブルで特定列の値を変えてレコードのコピーを行う、増やす

データベース
スポンサーリンク

SQL Server、データベースを使っていて、ある列の値だけを変えて、残りの列はそのままでレコードをコピーしたいことがありますね。

どうやればよいでしょうか?

スポンサーリンク

プライマリキーをコピーするとキー制約違反

プライマリキーをコピーするとキー制約違反が発生します。

 

そこでコピーしたいフィールドを列挙します。

指定されていないフィールドは、デフォルト値を受け取ります。

定義されていない場合は通常NULLです。

 

https://codeday.me/jp/qa/20181205/34297.html

 

主キーのみを変更し、残りのデータはすべて同じものをコピー

次の例は、同じテーブル内で、主キーを変更し、残りのデータは丸々同じものを追加したいという例です。

 

コードを主キーとした住所録というマスタがあるとします。

 

(住所録) SQL実行前

コード|名称|住所|・・・×n
-----------------------------
511000 ああ 東京
512000 いい 千葉
513000 うう 埼玉

 

これを主キーをある形態に基づいて変更したキーで新データとして追加したい(コピー)とします。

(元) (新)
511000 ⇒ 101511
512000 ⇒ 101512
513000 ⇒ 101513

 

(住所録) SQL実行後

コード|名称|住所|・・・×n
-----------------------------
511000 ああ 東京
512000 いい 千葉
513000 うう 埼玉
101511 ああ 東京
101512 いい 千葉
101513 うう 埼玉

 

なるべく簡略したSQL文で、これを実装する方法はないでしょうか。

SQL Serverで特定の値を変えてレコードのコピー

項目が1つ変更されますので、全項目を並べる作業からは逃れられません。

 

1レコードの追加は以下の通りです。

 

 

挿入するデータを作るSELECT文を作り、その頭にINSERT句を追加すると、結果をそのまま挿入することができます。

 

 

 

データベース
スポンサーリンク
スポンサーリンク
うらしたをフォローする
スポンサーリンク
urashita.com 浦下.com (ウラシタドットコム)

コメント

タイトルとURLをコピーしました