MySQLで検索結果を1行にまとめて表示する方法|GROUP_CONCAT()の使い方
MySQLでは、GROUP_CONCAT() 関数を使うことで、複数行に分かれた検索結果を1行にまとめて表示できます。この記事では、実際にテーブルを作成し、データを登録したうえで、GROUP_CONCAT() の具体的な使い方を実行例つきで解説します。
サンプルテーブルの作成
まずは動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable1507 -> ( -> Name varchar(20), -> PaperSet int -> ); Query OK, 0 rows affected (0.68 sec)
テストデータの挿入
続いて、INSERT文を使っていくつかのレコードを登録します。
mysql> insert into DemoTable1507 values('Chris',111);
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable1507 values('David',112);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1507 values('Mike',111);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1507 values('Bob',113);
Query OK, 1 row affected (0.14 sec)
登録データの確認
SELECT文でテーブル内の全レコードを表示してみます。
mysql> select * from DemoTable1507;
実行すると、次のような出力が得られます。
+-------+----------+ | Name | PaperSet | +-------+----------+ | Chris | 111 | | David | 112 | | Mike | 111 | | Bob | 113 | +-------+----------+ 4 rows in set (0.00 sec)
GROUP_CONCAT() で結果を1行にまとめる
ここからが本題です。GROUP_CONCAT() を使うと、条件に一致する複数の行を1つの文字列として連結できます。以下のクエリでは、PaperSetが111のレコードだけをWHERE句で絞り込み、名前を降順(DESC)で並べ替えたうえで、区切り文字「:」を挟んで1行にまとめています。
mysql> select group_concat(Name order by Name desc separator ':') -> from DemoTable1507 -> where PaperSet=111;
実行結果は以下のとおりです。
+-----------------------------------------------------+ | group_concat(Name order by Name desc separator ':') | +-----------------------------------------------------+ | Mike:Chris | +-----------------------------------------------------+ 1 row in set (0.00 sec)
構文のポイント解説
- order by:連結する値の並び順を指定できます。上記の例では降順(desc)にしているため、「Mike」が先頭に表示されています。昇順にしたい場合は
ascを指定するか、省略します。 - separator:値をつなぐ区切り文字を自由に指定できます。デフォルトはカンマ「,」ですが、例のように「:」など任意の文字列に変更可能です。
- where句との併用:GROUP_CONCAT() はWHERE句による絞り込みと組み合わせられるため、特定のグループのデータだけを1行で取得したい場合に非常に便利です。
なお、GROUP_CONCAT() の戻り値には最大長の制限(システム変数 group_concat_max_len、デフォルトは1024バイト)がある点に注意してください。大量のデータを連結する場合は、必要に応じてこの設定値を調整しておきましょう。
-
MySQLコマンドラインでデータベースを作成する方法を初心者向けに解説
MySQLコマンドラインでデータベースを作成する手順 この記事では、WindowsのコマンドプロンプトからMySQLに接続し、データベースを作成する一連の手順をスクリーンショット付きで解説します。初心者の方でも迷わず進められるよう、順番に見ていきましょう。 1. コマンドプロンプトを開く まず、コマンドプロンプトを起動します。キーボードのショートカット「Windows + R」キーを押すと、「ファイル名を指定して実行」ダイアログが表示されます。 2. 「CMD」と入力してOKをクリック 表示された入力欄に CMD と入力し、「OK」ボタンをクリックしてください。 3. コマンドプロンプトが
-
MySQLで複数テーブルの結果をマージする方法|JOINを使った結合手順を解説
MySQLで2つ以上のテーブルに分かれたデータを1つの結果としてまとめたい場合、JOIN(結合)を使うのが最もシンプルで効果的な方法です。この記事では、実際にテーブルを作成しながら、JOINによる結果のマージ手順をわかりやすく解説します。マージに使用するJOINの基本構文結果をマージするには、以下のような構文でシンプルなJOINを使用します。SELECT aliasName1.yourColumnName1, aliasName1.yourColumnName2, ... aliasName2.yourColumnName1 FROM yourTableName1 aliasN