回答受付が終了しました

SQL文の「insert into」について ●同じテーブル内で、ある値だけを変更してレコードを複製したいとする 例えば…[テーブル1] カラム名→ 年 | 項目 | 場所

SQL Server | データベース2,242閲覧xmlns="http://www.w3.org/2000/svg">25

回答(3件)

はい、SQLを使用して複数のレコードを一括で複製する方法があります。 具体的には、以下のような方法があります。 1 VALUES句を使用する方法 INSERT INTO テーブル1 (年, 項目, 場所) VALUES (2016, 'りんご', 'A2'), (2016, 'りんご', 'A3'), (2016, 'りんご', 'A4'); この方法では、VALUES句に複数の値を指定することで、一括で複数のレコードを挿入します。 2 SELECT文を使用する方法 INSERT INTO テーブル1 (年, 項目, 場所) SELECT 年, 項目, 'A2' FROM テーブル1 UNION ALL SELECT 年, 項目, 'A3' FROM テーブル1 UNION ALL SELECT 年, 項目, 'A4' FROM テーブル1; この方法では、UNION ALLを使ってテーブル内の複数の行を結合し、一括で挿入することができます。 どちらの方法も、テーブル内の特定の列の値を変更しつつ、複数のレコードを一括で複製することができます。 また、複製したいデータが増えても、手動で追加する必要がなく、クエリを変更するだけで対応できるので効率的です。

この回答はいかがでしたか? リアクションしてみよう

「複製したいデータがどのようになっているか」 によって変わってくるかなと思いました。 ①複製したいデータは手元にエクセルベースで存在している ②既にプログラムがあり、特定の処理によってまとめて複製データを作りたい ③日々ちょっとだけ項目が変わったデータが届くので、毎日データを登録したい (たとえば日付の部分+売上金額の部分が変わるとか) ②・③はプログラムチックにしないとだと思いますが、 多分①かな?と思ったので、①の場合よくやるやり方書いてみます。 例をもとに考えると、 エクセル上でinsert文を作成しちゃうのが分かりやすいかなと思いました。 1行目 セルA1 = insert into テーブル1(年,項目,場所) select 年,項目,' セルA2 = A2 セルA3 = ' from テーブル1 where 場所 = 'A1' セルA4 = セルA1~A3まで結合 とかすれば、A4にinsert文ができますよね? こうしておけば2列目を変更すれば、 大量にinsert文ができるので、後は流すだけと。 私の場合、データ作成はエクセルで、 insert文の作成はエディタでやることが多いかなと。 ご参考になれば。

一応、A2は引用符で囲んで'A2'にする必要があります。効率的な方法はプログラミング言語を使ってSQLを幾つも組み立てる方法や、追加する場所を別テーブル作って置いてJOINで結合する方法があります。