MariaDB 10.6にINSERT SELECT文で別のテーブルのデータをテーブルに追加する
環境
Windows10 64bit
MariaDB 10.6.4
書式
INSERT INTO テーブルA (カラム1,カラム2,…)
SELECT カラム1,カラム2,… FROM テーブルB
SELECT文で別のテーブルからデータを取得し、INSERT文でテーブルにデータを追加します。
別のテーブルに格納されているデータを取得してテーブルに追加します。
使用例
1.テーブルを作成します
MariaDB [testdb]> create table testA (tid int auto_increment, tname varchar(120), age int, index(tid)); Query OK, 0 rows affected (0.272 sec)
2.データをテーブルに追加します
MariaDB [testdb]> insert into testA (tname, age) values('中村', 13); Query OK, 1 row affected (0.125 sec) MariaDB [testdb]> insert into testA (tname, age) values('村上', 23); Query OK, 1 row affected (0.036 sec) MariaDB [testdb]> insert into testA (tname, age) values('上村', 33); Query OK, 1 row affected (0.066 sec)
3.「testA」テーブルにデータが格納されることを確認します
MariaDB [testdb]> select * from testA; +-----+-------+------+ | tid | tname | age | +-----+-------+------+ | 1 | 中村 | 13 | | 2 | 村上 | 23 | | 3 | 上村 | 33 | +-----+-------+------+ 3 rows in set (0.000 sec)
4.「testB」テーブルを作成します
MariaDB [testdb]> create table testB (tid int, tname varchar(20), taddr varchar(30), tage int); Query OK, 0 rows affected (0.259 sec)
5.データを「testB」テーブルに追加します
MariaDB [testdb]> insert into testB values(1, '山田', '横浜', 15); Query OK, 1 row affected (0.032 sec) MariaDB [testdb]> insert into testB values(2, '澤田', '東京', 25); Query OK, 1 row affected (0.063 sec) MariaDB [testdb]> insert into testB values(3, '山形', '名古屋', 35); Query OK, 1 row affected (0.069 sec)
データ一覧を確認します
MariaDB [testdb]> select * from testB; +------+-------+--------+------+ | tid | tname | taddr | tage | +------+-------+--------+------+ | 1 | 山田 | 横浜 | 15 | | 2 | 澤田 | 東京 | 25 | | 3 | 山形 | 名古屋 | 35 | +------+-------+--------+------+ 3 rows in set (0.000 sec)
6.「testB」に含まれるデータを取得しtestAテーブルに追加します
MariaDB [testdb]> insert into testA (tname, age) select tname, tage from testB; Query OK, 3 rows affected (0.214 sec) Records: 3 Duplicates: 0 Warnings: 0
結果を確認します
MariaDB [testdb]> select * from testA; +-----+-------+------+ | tid | tname | age | +-----+-------+------+ | 1 | 中村 | 13 | | 2 | 村上 | 23 | | 3 | 上村 | 33 | | 4 | 山田 | 15 | | 5 | 澤田 | 25 | | 6 | 山形 | 35 | +-----+-------+------+ 6 rows in set (0.000 sec)