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

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」と、用途に応じて使い分けるとよいでしょう。

  1. MySQLで複数の行をカウントし、結果を異なる列(1行)に表示する方法

    はじめにMySQLでは、条件付きのSUM関数を活用することで、複数の行をそれぞれカウントし、その結果を異なる列に横並び(1行)で表示できます。この記事では、色ごとのデータ件数を集計する例をもとに、具体的な手順をわかりやすく解説します。サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。ここでは、お気に入りの色を格納する「FavouriteColor」列を持つテーブルを用意しました。mysql> create table DemoTable1452-> (-> FavouriteColor varchar(50)-> );Query OK, 0 rows

  2. MySQLで3つの列から重複しない値を抽出し、1つの列にまとめて表示する方法

    MySQLでは、1つのクエリ内で UNION を複数回使うことで、複数の列に分かれている値を縦方向に結合し、重複を除いた値を1つの列として取得できます。本記事では、実際のテーブル作成からデータ挿入、そして目的の結果を得るまでの手順を順番に解説します。 サンプルテーブルの作成 まずは、3つの整数型の列を持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int -> ); Query OK, 0