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

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句と組み合わせれば、連結する値の順序を制御することもできます。

  1. 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コマンドでいくつかのレ

  2. MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説

    MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.