MySQLで定数と組み合わせて別のテーブルからデータを挿入する方法
MySQLでは、INSERT文とSELECT文を組み合わせることで、別のテーブルから取得したデータに固定値(定数)をマージしながら、新しいテーブルへ一括挿入することができます。ここでは、その具体的な手順をサンプルコードとともに解説します。
1. 最初のテーブルを作成する
まず、データ元となるテーブルを作成します。
mysql> create table DemoTable1(Name varchar(100)); Query OK, 0 rows affected (0.83 sec)
2. サンプルデータを挿入する
INSERTコマンドを使って、テーブルにレコードを追加します。
mysql> insert into DemoTable1 values('John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1 values('Robert');
Query OK, 1 row affected (0.13 sec)
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable1;
実行結果は以下の通りです。
+--------+ | Name | +--------+ | John | | Chris | | Robert | +--------+ 3 rows in set (0.00 sec)
4. 2つ目のテーブルを作成する
次に、挿入先となるテーブルを作成します。このテーブルには、定数を格納するカラムと、名前を格納するカラムを用意します。
mysql> create table DemoTable2( ConstantValue int, EmployeeName varchar(100) ); Query OK, 0 rows affected (0.70 sec)
5. 別テーブルのデータと定数をマージして挿入する
ここがポイントです。SELECT文で既存テーブルのデータを取得しつつ、リテラル値「1000」を定数として一緒に選択することで、すべての行に同じ定数を付加した状態で挿入できます。
mysql> insert into DemoTable2(ConstantValue,EmployeeName) select '1000',Name from DemoTable1; Query OK, 3 rows affected (0.13 sec) Records: 3 Duplicates: 0 Warnings: 0
6. 挿入結果を確認する
SELECT文で結果を確認してみましょう。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+---------------+--------------+ | ConstantValue | EmployeeName | +---------------+--------------+ | 1000 | John | | 1000 | Chris | | 1000 | Robert | +---------------+--------------+ 3 rows in set (0.00 sec)
まとめ
このように、INSERT INTO ... SELECT構文では、SELECT句の中に直接リテラル(定数)を記述できます。これにより、元テーブルのカラム値と固定値を組み合わせたデータを、一度のクエリで効率的に別テーブルへ挿入可能です。大量データの一括移行や、フラグ・日付などの共通値を付与したい場合に非常に便利なテクニックなので、ぜひ活用してください。
-
MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (
-
MySQLであるテーブルから別のテーブルへデータを挿入する方法(INSERT INTO SELECT)
MySQLであるテーブルから別のテーブルへデータをコピーして挿入したい場合は、INSERT INTO ... SELECT 文を使用します。この記事では、実際にテーブルを作成し、データを別テーブルへ移す手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. 元となるテーブルを作成する まず、コピー元となるテーブル「DemoTable1」を作成します。カラムは Id(int型)と FirstName(varchar型)の2つです。 mysql> create table DemoTable1 -> ( -> Id int, -> Fi