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

SQLでGROUP BYに基づいて列を連結するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-14 08:14:43
オリジナル
720 人が閲覧しました

How to Concatenate Columns Based on GROUP BY in SQL?

SQL の GROUP BY ステートメントでの列接続

SQL では、GROUP BY ステートメントに基づいて列を結合または結合する一般的な方法は、文字列演算子と組み合わせて集計関数を使用することです。これを達成する方法を見てみましょう。

次のテーブルの例を考えてみましょう:

ID 用户 活动 页面URL
1 act1 ab
2 act1 cd
3 act2 xy
4 act2 st

各ユーザーとアクティビティ グループの PageURL 値をカンマで区切って連結するには、次のクエリを使用できます:

SELECT [ユーザー], activity, STUFF((SELECT ',' ページ URL FROM テーブル名 WHERE [ユーザー] = a. [ユーザー] AND activity = a. activity FOR XML PATH ('')) , 1, 1, '') AS URL リスト FROM テーブル名 AS a GROUP BY [ユーザー]、アクティビティ

クエリの内訳:

  • SELECT [ユーザー]、アクティビティ、URL リスト: 表示するユーザー、アクティビティ、および URL リストの列を選択します。
  • STUFF: PageURL 値を単一の文字列に連結します。
  • (SELECT ',' Page URL ...): 各グループの PageURL 値を抽出し、それらを区切り文字としてカンマで連結するサブクエリ。
  • FOR XML PATH (''): サブクエリの結果を XML 文字列に変換します。
  • STUFF(... , 1, 1, ''): XML 文字列の先頭にあるカンマを削除し、連結された値のみを残します。
  • GROUP BY [USER], ACTIVITY: 「ユーザー」と「アクティビティ」ごとに結果をグループ化し、一意の組み合わせごとに結合が実行されるようにします。

生成されたテーブルには目的のレイアウトが含まれます:

用户 活动 URL列表
act1 ab, cd
act2 xy, st

このアプローチは、集計関数と文字列操作の機能を利用して、GROUP BY 操作に基づいて列の値を効果的に連結するため、さまざまなデータ操作タスクに対する柔軟なソリューションになります。

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

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