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

MySQLで2つの異なる列の値を1つの列のリストとして選択・表示する方法(UNION ALLの活用)

UNION ALLを使って2つの列の値を1つのリストにまとめる方法

MySQLで、異なる2つの列(カラム)に格納されている値を、1つの列としてまとめて取得したい場合はUNION ALLを使用します。UNION ALLは、複数のSELECT文の結果をそのまま連結して表示できる便利な構文です。

ここでは、実際にテーブルを作成して動作を確認してみましょう。

1. テーブルの作成

まず、2つの名前列を持つテーブルを作成します。

mysql> create table DemoTable1813
    (
    Name1 varchar(20),
    Name2 varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってサンプルデータを登録します。

mysql> insert into DemoTable1813 values('John','Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Adam','Robert');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Mike','Sam');
Query OK, 1 row affected (0.00 sec)

3. テーブルの内容を確認

SELECT文でテーブルの全レコードを表示してみましょう。

mysql> select * from DemoTable1813;

実行すると、次のような結果が出力されます。

+-------+--------+
| Name1 | Name2  |
+-------+--------+
| John  |  Chris |
| Adam  |  Robert|
| Mike  |    Sam |
+-------+--------+
3 rows in set (0.00 sec)

4. UNION ALLで2つの列の値を1つのリストとして取得

それでは、Name1とName2という2つの列の値を、1つの「Name」列としてまとめて取得するクエリを見てみましょう。ポイントは、それぞれのSELECT文でAS句を使って同じ別名を付けることです。

mysql> select Name1 as Name from DemoTable1813
       union all
       select Name2 as Name from DemoTable1813;

実行結果は以下のとおりです。

+--------+
| Name   |
+--------+
| John   |
| Adam   |
| Mike   |
| Chris  |
| Robert |
| Sam    |
+--------+
6 rows in set (0.00 sec)

補足:UNION ALLとUNIONの違い

UNION ALLは重複を含めてすべての行を返しますが、UNIONを使用すると重複する行が自動的に削除されます。すべての値をそのままリスト化したい場合はUNION ALLが適しており、パフォーマンスの面でも有利です。

このように、UNION ALLを活用すれば、複数の列に分かれているデータを簡単に1つの列として扱うことができます。リストの作成や集計処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合

    MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName

  2. MySQLでハイフン区切りの文字列値を1つの列から複数の列に分離して選択する方法

    ハイフンで区切られた文字列値を1つの列から複数の列に分離して取得したい場合、MySQLの SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。ここでは、サンプルテーブルを使って具体的な手順を解説します。 サンプルテーブルの作成 まず、従業員情報を格納するテーブルを作成します。 mysql> create table DemoTable1962 ( EmployeeInformation text ); Query OK, 0 rows affected (0.00 sec) データの挿入 次に、INSERT文を使って「ID-名前-年齢」の形