MySQLで複数のカラムを1つのカラムに結合して表示する方法
MySQLでは、CONCAT()関数を使うことで、複数のカラムの値を結合し、1つのカラムとして表示できます。例えば、「姓」と「名」が別々のカラムに保存されている場合、それらを連結してフルネームとして出力することが可能です。
ここでは、実際にテーブルを作成し、複数のカラムを1つの別名(エイリアス)で取得する手順を解説します。
1. サンプルテーブルの作成
まず、テーブルを作成します。
mysql> create table DemoTable
-> (
-> FirstName varchar(30),
-> LastName varchar(30)
-> );
Query OK, 0 rows affected (0.49 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable values('Chris','Brown');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Carol','Taylor');
Query OK, 1 row affected (0.15 sec)3. テーブルの内容を確認
SELECT文を使って、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
出力結果
+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Chris | Brown |
| Adam | Smith |
| Carol | Taylor |
+-----------+----------+
3 rows in set (0.00 sec)
このように、FirstNameとLastNameがそれぞれ別のカラムとして格納されています。
4. CONCAT()で複数のカラムを1つに結合する
以下が、複数のカラムをCONCAT()関数で結合し、単一の別名を付けて取得するクエリです。
mysql> select concat(FirstName,' ',LastName) as concatValue from DemoTable order by
concatValue DESC;
出力結果
+--------------+
| concatValue |
+--------------+
| Chris Brown |
| Carol Taylor |
| Adam Smith |
+--------------+
3 rows in set (0.00 sec)
このように、FirstNameとLastNameがスペース区切りで連結され、「concatValue」という1つのカラムとして表示されます。また、AS句で付けたエイリアスはORDER BY句でもそのまま使用できるため、結合後の値を基準にソートすることも可能です。
なお、NULLが含まれる可能性がある場合は、NULLを空文字に置換できるCONCAT_WS()関数を使うと、より安全に文字列を結合できます。用途に応じて使い分けるとよいでしょう。
-
MySQLで複数の行・列を1行に連結する方法:GROUP_CONCATとCONCATの使い方
MySQLでは、GROUP_CONCAT()関数とCONCAT()関数を組み合わせることで、複数の行や列のデータを1つの行に連結できます。この記事では、実際のテーブル作成から連結クエリの実行まで、手順を追って解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成します。顧客ID、氏名、年齢を持つシンプルなテーブルです。mysql> create table DemoTable1463 -> ( -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ClientName varcha
-
MySQLで3つの列から重複しない値を抽出し、1つの列にまとめて表示する方法
MySQLでは、1つのクエリ内で UNION を複数回使うことで、複数の列に分かれている値を縦方向に結合し、重複を除いた値を1つの列として取得できます。本記事では、実際のテーブル作成からデータ挿入、そして目的の結果を得るまでの手順を順番に解説します。 サンプルテーブルの作成 まずは、3つの整数型の列を持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int -> ); Query OK, 0