ホームページ >データベース >mysql チュートリアル >MySQL で GROUP_CONCAT 関数を使用して複数行のデータを 1 つの文字列に結合する方法
MySQL で GROUP_CONCAT 関数を使用して複数行のデータを文字列にマージする方法
MySQL データベースでは、複数行のデータを 1 つの文字列にマージする必要がある場合があります。この状況は、列の複数の値を 1 つの文字列に結合し、カンマまたはその他の区切り文字で区切る必要がある場合によく発生します。 MySQL は、このニーズを満たすために非常に便利な関数 GROUP_CONCAT を提供します。
GROUP_CONCAT 関数の構文は次のとおりです:
GROUP_CONCAT([DISTINCT] expr [, expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, col_name ...]] [SEPARATOR str_val])
このうち、DISTINCT はオプションであり、重複排除に使用されます。expr はマージする必要がある列名または式です。ORDER は、 BY 句はオプションで、マージ結果の並べ替えを指定するために使用されます。SEPARATOR はオプションで、区切り文字を指定するために使用され、デフォルトはカンマです。
以下は、GROUP_CONCAT 関数の使用方法を示す例です。
id と name の 2 つのフィールドを含むテーブル フルーツがあるとします。このうち、name列に複数行のデータが含まれているので、同じIDの名前を文字列に結合し、カンマで区切っていきたいと思います。テーブルの構造とデータは次のとおりです:
CREATE TABLE fruit ( id INT, name VARCHAR(50) ); INSERT INTO fruit (id, name) VALUES (1, '苹果'); INSERT INTO fruit (id, name) VALUES (1, '梨子'); INSERT INTO fruit (id, name) VALUES (1, '香蕉'); INSERT INTO fruit (id, name) VALUES (2, '葡萄'); INSERT INTO fruit (id, name) VALUES (2, '桃子'); INSERT INTO fruit (id, name) VALUES (3, '橙子');
次の SQL ステートメントを使用して、同じ ID を持つ名前を文字列にマージできます:
SELECT id, GROUP_CONCAT(name SEPARATOR ',') AS merged_names FROM fruit GROUP BY id;
上記の SQL ステートメントを実行した後、次の結果が得られます。
id | merged_names ---|------------- 1 | 苹果,梨子,香蕉 2 | 葡萄,桃子 3 | 橙子
この例では、id 列に基づいてグループ化し、GROUP_CONCAT 関数を使用して各グループ内の name 列をカンマで区切られた単一の文字列に結合しました。
重複を削除する必要がない場合は、DISTINCT キーワードを省略できることに注意してください。さらに、マージされた文字列を並べ替える必要がある場合は、ORDER BY 句を使用できます。たとえば、マージされた文字列を名前列のアルファベット順に並べ替えることができます。
SELECT id, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ',') AS merged_names FROM fruit GROUP BY id;
上記の SQL ステートメントを実行すると、次の結果が得られます。
id | merged_names ---|------------- 1 | 梨子,苹果,香蕉 2 | 桃子,葡萄 3 | 橙子
ご覧のとおり、マージ 結果の文字列は、name 列でアルファベット順に並べ替えられます。
実際のアプリケーションでは、GROUP_CONCAT 関数は非常に実用的です。複数行のデータを 1 つの文字列に結合することで、データを簡単に要約して表示できるようになり、データベース クエリの柔軟性が向上します。
要約すると、この記事では、GROUP_CONCAT 関数を使用して、MySQL で複数行のデータを 1 つの文字列にマージする方法を紹介します。実際の例のデモンストレーションを通じて、読者がこの機能の使い方をマスターし、データベース内のデータ結合のニーズをより適切に処理できることを願っています。
以上がMySQL で GROUP_CONCAT 関数を使用して複数行のデータを 1 つの文字列に結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。