ホームページ > データベース > mysql チュートリアル > SQLでGROUP BYを使用して列の値を連結するにはどうすればよいですか?

SQLでGROUP BYを使用して列の値を連結するにはどうすればよいですか?

DDD
リリース: 2025-01-14 09:46:43
オリジナル
816 人が閲覧しました

How to Concatenate Column Values with GROUP BY in SQL?

SQL の GROUP BY ステートメントを使用して列の値を結合します

次のデータを含むテーブルがあるとします:

<code>ID | 用户 | 活动 | 页面URL
1 | 我 | act1 | ab
2 | 我 | act1 | cd
3 | 你 | act2 | xy
4 | 你 | act2 | st</code>
ログイン後にコピー

ユーザーアクティビティ ごとにデータをグループ化し、各グループの ページ URL 列の値を 1 つのカンマに結合したいと考えています。分離された文字列。目的の出力は次のとおりです:

<code>用户 | 活动 | 页面URL
我 | act1 | ab, cd
你 | act2 | xy, st</code>
ログイン後にコピー

GROUP BY クエリを使用してこの結合を実現するには、GROUP BY 句でサブクエリとともに STUFF() 関数を使用できます。詳細な内訳は次のとおりです:

<code class="language-sql">SELECT
    [用户], 活动,
    STUFF(
        (SELECT DISTINCT ',' + 页面URL
         FROM 表名称
         WHERE [用户] = a.[用户] AND 活动 = a.活动
         FOR XML PATH (''))
         , 1, 1, '')  AS URL列表
FROM 表名称 AS a
GROUP BY [用户], 活动</code>
ログイン後にコピー
  • SELECT: 必要な列を選択します: ユーザーアクティビティ、および接続された ページ URL の値 (URL
  • STUFF(): この関数は、変更する文字列、開始位置、削除する文字数、挿入する文字列の 3 つのパラメータを受け取ります。この場合、最初の文字 (カンマ) が削除され、連結された Page URL 値が変更された文字列に挿入されます。
  • FOR XML PATH(''): のサブクエリ このサブクエリは、User および Activity 🎜>Page URL 値。 FOR XML PATH('') 句を使用して、値を連結して単一の文字列を返します。 a.[User] AND activity = a.Activity:
  • このセクションでは、サブクエリが現在処理中のグループに属する
  • ページ URL 値のみを取得するようにします。 GROUP BY:
  • データを
  • User および Activity ごとにグループ化し、各グループの Page URL 値を集計します。 このクエリを実行すると、一意の
  • User

Activity のそれぞれの Page URL の値がマージされ、目的の出力が得られます。カンマで区切ります。

以上がSQLでGROUP BYを使用して列の値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート