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

MySQLでGROUP BYとGROUP_CONCATを使って文字列を連結する方法と区切り文字の指定方法

MySQLでGROUP BYを使用しながら文字列を連結するには、GROUP_CONCAT()関数にSEPARATORパラメータを組み合わせて使います。区切り文字にはカンマ(,)やスペース( )など、任意の文字を指定できます。

基本構文

SELECT yourColumnName1,GROUP_CONCAT(yourColumnName2 SEPARATOR 'yourValue') as anyVariableName FROM yourTableName GROUP BY yourColumnName1;

それでは、実際にテーブルを作成しながらこの構文の動きを確認していきましょう。

サンプルテーブルの作成

まず、以下のクエリでテーブルを作成します。

mysql> create table GroupConcatenateDemo
    -> (
    -> Id int,
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.99 sec)

次に、INSERTコマンドを使っていくつかのレコードを追加します。

mysql> insert into GroupConcatenateDemo values(10,'Larry');
Query OK, 1 row affected (0.41 sec)
mysql> insert into GroupConcatenateDemo values(11,'Mike');
Query OK, 1 row affected (0.18 sec)
mysql> insert into GroupConcatenateDemo values(12,'John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into GroupConcatenateDemo values(10,'Elon');
Query OK, 1 row affected (0.63 sec)
mysql> insert into GroupConcatenateDemo values(10,'Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into GroupConcatenateDemo values(11,'Sam');
Query OK, 1 row affected (0.14 sec)

SELECT文でテーブル内の全レコードを表示して確認します。

mysql> select *from GroupConcatenateDemo;

実行結果は以下の通りです。

+------+-------+
| Id   | Name  |
+------+-------+
|   10 | Larry |
|   11 | Mike  |
|   12 | John  |
|   10 | Elon  |
|   10 | Bob   |
|   11 | Sam   |
+------+-------+
6 rows in set (0.00 sec)

GROUP BYとGROUP_CONCATで文字列を連結する

ここからが本題です。Idを基準にGROUP BYを実行し、GROUP_CONCAT()関数を使ってNameの文字列を連結します。SEPARATORにはカンマを指定しています。

mysql> select Id,group_concat(Name SEPARATOR ',') as GroupConcatDemo from GroupConcatenateDemo
    -> group by Id;

実行結果は以下の通りです。同じIdごとに名前がカンマ区切りで連結されているのがわかります。

+------+-----------------+
| Id   | GroupConcatDemo |
+------+-----------------+
|   10 | Larry,Elon,Bob  |
|   11 | Mike,Sam        |
|   12 | John            |
+------+-----------------+
3 rows in set (0.00 sec)

このように、SEPARATORの値を変更すれば、カンマ以外にもスペースやハイフンなど、任意の区切り文字で連結結果を整形できます。なお、SEPARATORを省略した場合はデフォルトでカンマが使用されます。

  1. Androidでスレッドの優先度を設定する方法【サンプルコード付きで解説】

    スレッドとは具体的な手順に入る前に、まず「スレッド」について簡単におさらいしておきましょう。スレッドとは軽量なサブプロセスのことであり、UI(ユーザーインターフェース)の処理を妨げることなく、バックグラウンドで作業を実行するために使用されます。本記事では、Androidアプリにおいてスレッドに優先度を設定する方法を、実際のサンプルコードとともにわかりやすく解説します。ステップ1:新規プロジェクトを作成するAndroid Studioを起動し、メニューから「File」→「New Project」を選択して、必要事項を入力し新しいプロジェクトを作成します。ステップ2:レイアウトファイル(activ

  2. iPhoneでGrammarlyキーボードをインストール・活用する完全ガイド

    iPhoneでの文章作成に多くの時間を使っていませんか?Gmailアプリで頻繁にメールを送信したり、外出先でドキュメントを作成したりする方も多いのではないでしょうか。 もしそうであれば、iPhoneから直接文法ミスをチェックできるシンプルなツールがあると便利です。スペルチェックと文法チェックのために開発されたキーボード拡張機能「Grammarly Keyboard」は、まさに理想的なソリューションです。 iPhoneにGrammarlyキーボードをインストールする方法 Grammarly Keyboardは、メールからテキストメッセージまで、あらゆる文章の校正や編集を可能にするシンプルなスペル