MySQLで列の値をCSV形式で表示する方法|GROUP_CONCAT()の使い方を解説
MySQLで列の値をCSV形式で表示するには?
MySQLで列の値をCSV(カンマ区切り)形式で表示したい場合は、GROUP_CONCAT()関数を使用します。この関数を利用することで、複数行に分かれている値を1行のカンマ区切り文字列としてまとめて取得できます。
ここでは、実際にテーブルを作成し、データを投入して、GROUP_CONCAT()の動作を確認していきましょう。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable786 (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100)
)
AUTO_INCREMENT=101;
Query OK, 0 rows affected (0.70 sec)2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable786(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable786(StudentName) values('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable786(StudentName) values('Mike');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable786(StudentName) values('Sam');
Query OK, 1 row affected (0.12 sec)3. テーブル内のレコードを確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable786;
実行結果は以下の通りです。
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | Chris | | 102 | Robert | | 103 | Mike | | 104 | Sam | +-----------+-------------+ 4 rows in set (0.00 sec)
4. 列の値をCSV形式で取得するクエリ
MySQLで列の値をCSV形式として選択するには、以下のようなクエリを実行します。
mysql> select group_concat(StudentId),group_concat(StudentName) from DemoTable786;
実行結果は以下の通りです。
+-------------------------+---------------------------+ | group_concat(StudentId) | group_concat(StudentName) | +-------------------------+---------------------------+ | 101,102,103,104 | Chris,Robert,Mike,Sam | +-------------------------+---------------------------+ 1 row in set (0.00 sec)
実行結果のポイント
上記の結果を見ると、GROUP_CONCAT()関数によって、StudentId列の値は「101,102,103,104」、StudentName列の値は「Chris,Robert,Mike,Sam」というように、それぞれカンマ区切りの文字列として1行にまとめられて表示されていることがわかります。
なお、GROUP_CONCAT()はデフォルトでカンマ(,)を区切り文字として使用しますが、SEPARATOR句を使えば、セミコロンやスペースなど任意の区切り文字に変更することも可能です。また、ORDER BY句と組み合わせれば、連結する値の順序を制御することもできます。
-
MySQLでCASE WHENを使って列内の2つの値を交換・更新する方法
MySQLである列内の2つの値を入れ替え(スワップ)したい場合、CASE WHEN文を使えば一度のUPDATE文で簡単に実現できます。ここでは、サンプルテーブルを作成しながら、実際に値を交換する手順を解説します。 1. サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1382 -> ( -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.57 sec) 2. レコードの挿入 INSERTコマンドでいくつかのレ
-
MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説
MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.