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つの列として扱うことができます。リストの作成や集計処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。
-
MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合
MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName
-
MySQLでハイフン区切りの文字列値を1つの列から複数の列に分離して選択する方法
ハイフンで区切られた文字列値を1つの列から複数の列に分離して取得したい場合、MySQLの SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。ここでは、サンプルテーブルを使って具体的な手順を解説します。 サンプルテーブルの作成 まず、従業員情報を格納するテーブルを作成します。 mysql> create table DemoTable1962 ( EmployeeInformation text ); Query OK, 0 rows affected (0.00 sec) データの挿入 次に、INSERT文を使って「ID-名前-年齢」の形