MySQLで異なるテーブルの列を連結する方法|CONCAT関数の使い方を解説
MySQLでは、CONCAT()関数を使うことで、異なるテーブルに存在する列の値を簡単に連結できます。この記事では、2つのテーブルを作成し、それぞれの列を組み合わせて氏名のような文字列を生成する具体的な手順を解説します。
1. 最初のテーブルを作成する
まず、名前(FirstName)を格納するテーブルを作成しましょう。
mysql> create table DemoTable1
-> (
-> FirstName varchar(20)
-> );
Query OK, 0 rows affected (0.90 sec)
次に、INSERTコマンドを使ってレコードを挿入します。
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1 values('David');
Query OK, 1 row affected (0.12 sec)
SELECT文ですべてのレコードを確認してみましょう。
mysql> select *from DemoTable1;
実行結果は以下の通りです。
+-----------+
| FirstName |
+-----------+
| Chris |
| David |
+-----------+
2 rows in set (0.00 sec)
2. 2つ目のテーブルを作成する
続いて、姓(LastName)を格納する2つ目のテーブルを作成します。
mysql> create table DemoTable2
-> (
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.95 sec)
こちらにもINSERTコマンドでレコードを挿入します。
mysql> insert into DemoTable2 values('Brown');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable2 values('Miller');
Query OK, 1 row affected (0.18 sec)
SELECT文で内容を確認します。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+----------+
| LastName |
+----------+
| Brown |
| Miller |
+----------+
2 rows in set (0.00 sec)
3. 異なるテーブルの列を連結するクエリ
それでは、2つのテーブルの列を連結するクエリを見ていきましょう。CONCAT()関数に複数の引数を渡すことで、各テーブルの列の値をスペース区切りで1つの文字列にまとめられます。
mysql> select concat(tbl1.FirstName,' ',tbl2.LastName) from DemoTable1 tbl1
-> left join DemoTable2 tbl2
-> on tbl2.LastName='Brown' or tbl2.LastName='Miller';
実行結果は以下の通りです。
+------------------------------------------+
| concat(tbl1.FirstName,' ',tbl2.LastName) |
+------------------------------------------+
| Chris Brown |
| David Brown |
| Chris Miller |
| David Miller |
+------------------------------------------+
4 rows in set (0.04 sec)
まとめ
このように、CONCAT()関数とJOINを組み合わせることで、異なるテーブルの列の値を自由に連結できます。上記の例では、DemoTable1の各行に対してDemoTable2の条件に一致する行が結合され、「Chris Brown」「David Miller」のように名前と姓が組み合わされた結果が取得できました。実際の開発では、結合条件やWHERE句を適切に設計することで、必要なデータだけを効率的に連結できるので、ぜひ活用してみてください。
-
MySQLで異なる列を持つ別テーブルへレコードをコピーする方法(INSERT INTO SELECT活用)
あるテーブルから、列名や構成が異なる別のテーブルへレコードをコピーしたい場合、INSERT INTO SELECT 文を使用します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 ステップ1:コピー元のテーブルを作成する まずはコピー元となるテーブル「DemoTable1900」を作成します。ClientIdは自動採番(AUTO_INCREMENT)とし、初期値を1000に設定しています。また、ClientAgeにはデフォルト値29を設定しました。 mysql> create table DemoTable1900 ( Clie
-
MySQLのINSERT INTO SELECT文で複数のテーブルからレコードを挿入する方法
複数のテーブルからレコードを挿入するには、INSERT INTO ... SELECT 文を使用します。この記事では、2つのテーブルのデータを組み合わせて、別のテーブルへレコードを挿入する手順を、実際の実行例とともに解説します。 1つ目のテーブルを作成する まず、挿入元となる1つ目のテーブルを作成しましょう。 mysql> create table DemoTable1943 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) サンプルデータを挿入する INSERTコマンドを使って、テーブルにレコー