MySQLで2つの列から重複を除いた名前を抽出し、1つの列にまとめて表示する方法
はじめに
MySQLでは、テーブル内の2つの異なる列に格納された値を、重複を排除した上で1つの列として取得したいケースがあります。例えば、「Name1」と「Name2」という2つの名前列から、すべての名前を一意なリストとして取り出したい場合です。
このような場合には、UNION演算子を使用します。UNIONは複数のSELECT文の結果を統合し、自動的に重複行を削除してくれる便利な機能です。
サンプルテーブルの作成
まず、2つの名前列を持つテーブルを作成しましょう。
mysql> create table DemoTable
(
Name1 varchar(100),
Name2 varchar(100)
);
Query OK, 0 rows affected (0.58 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを挿入します。ここでは、意図的に同じ組み合わせのレコードを複数登録しています。
mysql> insert into DemoTable values('Adam','Bob');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Adam','Bob');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('David','Chris');
Query OK, 1 row affected (0.13 sec)テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、以下のような結果が出力されます。
+-------+-------+
| Name1 | Name2 |
+-------+-------+
| Adam | Bob |
| Adam | Bob |
| David | Chris |
+-------+-------+
3 rows in set (0.00 sec)
UNIONを使って2つの列から重複のない名前を取得する
ここからが本題です。2つの列から個別(一意)な名前を抽出するには、以下のようにUNIONを使用します。
mysql> select Name1 from DemoTable
UNION
select Name2 from DemoTable;
実行結果は以下の通りです。
+-------+
| Name1 |
+-------+
| Adam |
| David |
| Bob |
| Chris |
+-------+
4 rows in set (0.02 sec)
結果のポイント
注目すべきは、以下の点です。
- 「Adam」と「Bob」は複数回登場しますが、結果にはそれぞれ1回だけ表示されています。
- Name1列とName2列の値が、1つの列に統合されて返されています。
これは、UNIONがデフォルトで重複行を自動的に除去するためです。なお、もし重複も含めてすべての値を取得したい場合は、UNION ALLを使用することで、重複を削除せずにそのまま統合できます。
まとめ
MySQLで2つの列の値を1つの一意なリストとして取得したい場合は、UNION演算子を使うのが最もシンプルで効果的な方法です。重複除去が必要なら「UNION」、重複も残したいなら「UNION ALL」と、用途に応じて使い分けるとよいでしょう。
-
MySQLで複数の行をカウントし、結果を異なる列(1行)に表示する方法
はじめにMySQLでは、条件付きのSUM関数を活用することで、複数の行をそれぞれカウントし、その結果を異なる列に横並び(1行)で表示できます。この記事では、色ごとのデータ件数を集計する例をもとに、具体的な手順をわかりやすく解説します。サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。ここでは、お気に入りの色を格納する「FavouriteColor」列を持つテーブルを用意しました。mysql> create table DemoTable1452-> (-> FavouriteColor varchar(50)-> );Query OK, 0 rows
-
MySQLで3つの列から重複しない値を抽出し、1つの列にまとめて表示する方法
MySQLでは、1つのクエリ内で UNION を複数回使うことで、複数の列に分かれている値を縦方向に結合し、重複を除いた値を1つの列として取得できます。本記事では、実際のテーブル作成からデータ挿入、そして目的の結果を得るまでの手順を順番に解説します。 サンプルテーブルの作成 まずは、3つの整数型の列を持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int -> ); Query OK, 0