ホームページ  >  記事  >  データベース  >  MySQL の GROUP_CONCAT 関数を使用して、複数行のデータを 1 行にマージします。

MySQL の GROUP_CONCAT 関数を使用して、複数行のデータを 1 行にマージします。

WBOY
WBOYオリジナル
2023-07-25 19:54:253478ブラウズ

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. 同じ列内のデータをマージする

次のようなものがあるとします。学生テーブル。学生の名前と趣味が含まれます。各生徒の趣味を 1 つの行にまとめて分析しやすくしたいと考えています。これは、次のコードを使用して実現できます。

SELECT student_name, GROUP_CONCAT(hobby) AS hobbies
FROM student
GROUP BY student_name;

上記のコードは、各生徒の名前と趣味を出力します。趣味はデフォルトのカンマ区切り文字を使用して接続されます。

  1. 複数の列のデータをマージする

複数の列のデータをマージする必要がある場合があります。たとえば、趣味に加えて、学生テーブルには評価リストもあります。各生徒の「いいね!」と評価を 1 つの文字列に結合したいと考えています。これは、次のコードを使用して実現できます。

SELECT student_name, GROUP_CONCAT(CONCAT(hobby, ':', score)) AS hobby_score
FROM student
GROUP BY student_name;

上記のコードは、各生徒の名前、趣味、評価をコロンで区切って出力します。

  1. 指定した順序でデータを結合する

指定した順序でデータを結合する必要がある場合があります。たとえば、注文番号と製品名を含む注文テーブルがあります。注文番号の昇順に商品名を結合したい。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。