テーブルから取得したデータを別のテーブルに追加

広告
eyecatch

テーブルにデータを追加する場合、INSERT 文でデータを指定して追加する方法の他に、他のテーブルに格納されているデータを SELECT 文で取得し追加することもできます。ここではテーブルから取得したデータを別のテーブルに追加する方法について解説します。

他のテーブルから取得したデータをテーブルに追加する

他のテーブルから取得したデータをテーブルに追加する場合の書式は次の通りです。

INSERT INTO テーブル名 SQL文;

データを追加するテーブルに含まれるカラムの数と、SQL文で取得するカラムの数は同じである必要があります。(カラム名は異なっていても構いません)。例えば次のようになります。

INSERT INTO テーブル1 SELECT C1, C2, C3 FROM テーブル2 WHERE 条件式;

上記ではテーブル1で定義されているカラムの数は3である必要があります。

データを追加するカラムを指定することもできます。次の書式を使います。

INSERT INTO テーブル名(カラム名1, カラム名2, ...) SQL文;

この場合もデータを追加するカラムの数と、 SQL 文で取得するカラムの数は同じである必要があります。例えば次のようになります。

INSERT INTO テーブル1(N1, N2, N3) SELECT C1, C2, C3 FROM テーブル2 WHERE 条件式;

では実際に試してみます。元になるテーブルとして次のようなテーブルを作成し、データをいくつか追加しました。

create table user(id integer, name text, old integer);

insert into user values(1, 'Yamada', 24);
insert into user values(2, 'Oota', 31);
insert into user values(3, 'Suzuki', 18);
insert into user values(4, 'Kudou', 25);
insert into user values(5, 'Nishi', 19);

他のテーブルから取得したデータをテーブルに追加する(1)

次にデータを追加するテーブルを次のように作成します。

create table olduser(userid integer, name text, address text);

他のテーブルから取得したデータをテーブルに追加する(2)

user テーブルから old カラムの値が 20 より大きいデータを取得し、 id カラムと name カラムの値を olduser テーブルに追加します。

insert into olduser(userid, name) select id, name from user where old > 20;

他のテーブルから取得したデータをテーブルに追加する(3)

データが追加されたかどうか olduser テーブルからデータを取得してみます。(下記では比較できるようにまず user テーブルのデータを取得しています)。

select * from olduser;

他のテーブルから取得したデータをテーブルに追加する(4)

このように元のテーブルの old カラムの値が 20 より大きいデータだけを取得し別のテーブルに追加することができました。なおデータを追加する時に olduser テーブルの address カラムには値を指定していませんのでデフォルトの値の NULL が格納されています。

-- --

別のテーブルからデータを取得してテーブルに追加する方法について解説しました。

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。