MySQL の GROUP_CONCAT 関数を使用して、複数行のデータを 1 行にマージする
実際のデータ処理プロセスでは、後続の分析と処理を容易にするために、複数行のデータを 1 行にマージする必要がある場合があります。 MySQL の GROUP_CONCAT 関数は、この機能の実現に役立ちます。この記事では、GROUP_CONCAT 関数の使用法を紹介し、いくつかの一般的なシナリオでのコード例を示します。
GROUP_CONCAT 関数は、MySQL で文字列をマージするために使用される集計関数であり、指定された区切り文字に従ってデータの列を文字列に連結できます。具体的な構文は次のとおりです。
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 関数を使用する方法のコード例を示します。
次のようなものがあるとします。学生テーブル。学生の名前と趣味が含まれます。各生徒の趣味を 1 つの行にまとめて分析しやすくしたいと考えています。これは、次のコードを使用して実現できます。
SELECT student_name, GROUP_CONCAT(hobby) AS hobbies FROM student GROUP BY student_name;
上記のコードは、各生徒の名前と趣味を出力します。趣味はデフォルトのカンマ区切り文字を使用して接続されます。
複数の列のデータをマージする必要がある場合があります。たとえば、趣味に加えて、学生テーブルには評価リストもあります。各生徒の「いいね!」と評価を 1 つの文字列に結合したいと考えています。これは、次のコードを使用して実現できます。
SELECT student_name, GROUP_CONCAT(CONCAT(hobby, ':', score)) AS hobby_score FROM student GROUP BY student_name;
上記のコードは、各生徒の名前、趣味、評価をコロンで区切って出力します。
指定した順序でデータを結合する必要がある場合があります。たとえば、注文番号と製品名を含む注文テーブルがあります。注文番号の昇順に商品名を結合したい。
SELECT order_id, GROUP_CONCAT(product_name ORDER BY order_id ASC) AS products FROM orders GROUP BY order_id;
上記のコードは、各注文の注文番号と対応する製品名を出力します。製品名は注文番号の昇順に並べられています。
上記は、いくつかの一般的なシナリオで MySQL の GROUP_CONCAT 関数を使用する方法のコード例です。 GROUP_CONCAT 関数を使用すると、複数のデータ行を 1 つの行に簡単に結合でき、データ処理の効率が向上します。この記事がデータベース運用のお役に立てれば幸いです。
以上がMySQL の GROUP_CONCAT 関数を使用して、複数行のデータを 1 行にマージします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。