MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで2つのテーブルをUNION結合し、新しい列を追加する方法

MySQLでは、UNION演算子を利用することで、構造が似た2つのテーブルのレコードを1つの結果セットに結合できます。さらに、SELECT文の中で固定値に別名(AS)を指定すると、結合結果に新しい列を追加することも可能です。ここでは、実際の例を通じてその手順を詳しく解説します。

1つ目のテーブルを作成する

まず、CREATE TABLE文でテーブルを作成します。

mysql> create table DemoTable1
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.76 sec)

続いて、INSERTコマンドでレコードを挿入します。

mysql> insert into DemoTable1(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable1(Name) values('Robert');
Query OK, 1 row affected (0.13 sec)

SELECT文でテーブル内の全レコードを確認します。

mysql> select *from DemoTable1;

出力結果

+----+--------+
| Id | Name   |
+----+--------+
|  1 | Chris  |
|  2 | Robert |
+----+--------+
2 rows in set (0.00 sec)

2つ目のテーブルを作成する

次に、2つ目のテーブルを作成します。

mysql> create table DemoTable2
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.48 sec)

同様に、INSERTコマンドでレコードを挿入します。

mysql> insert into DemoTable2(Name) values('David');
Query OK, 1 row affected (0.53 sec)

mysql> insert into DemoTable2(Name) values('Bob');
Query OK, 1 row affected (0.15 sec)

SELECT文で2つ目のテーブルの全レコードを表示します。

mysql> select *from DemoTable2;

出力結果

+----+-------+
| Id | Name  |
+----+-------+
|  1 | David |
|  2 | Bob   |
+----+-------+
2 rows in set (0.00 sec)

2つのテーブルを結合して新しい列を追加する

以下のクエリでは、UNIONを使って2つのテーブルを結合しながら、固定値に別名「Age」を付けることで新しい列を追加しています。DemoTable1のレコードには「27」、DemoTable2のレコードには「20」が設定されます。

mysql> select Id,Name, 27 AS Age from DemoTable1
    -> union
    -> select Id,name,20 AS Age from DemoTable2;

出力結果

+----+--------+-----+
| Id | Name   | Age |
+----+--------+-----+
|  1 | Chris  | 27  |
|  2 | Robert |  27 |
|  1 | David  | 20  |
|  2 | Bob    | 20  |
+----+--------+-----+
4 rows in set (0.00 sec)

このように、UNIONとAS別名を組み合わせることで、テーブルには実際には存在しない新しい列を含んだ結果セットを簡単に作成できます。各テーブルごとに異なる値を設定できるため、データの出所を識別したい場合などにも便利なテクニックです。

  1. JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説

    ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ

  2. MySQLで特定のカラム名を持つテーブルを検索する方法

    MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a