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

SQL の GROUP BY 句を使用して列の値をカンマ区切りのリストに結合するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-14 08:07:50
オリジナル
1027 人が閲覧しました

How Can I Combine Column Values into a Comma-Separated List Using SQL's GROUP BY Clause?

GROUP BY を使用したデータの集計: カンマ区切りリストの作成

SQL の GROUP BY 句は、共有列値に基づいて行をグループ化し、集計関数を適用する場合に強力です。 よく使用されるアプリケーションは、単一の列の値をグループごとに単一のカンマ区切りの文字列に結合することです。

テーブルの例を使って説明してみましょう:

<code>ID  User  Activity  PageURL  
1  Me    act1      ab     
2  Me    act1      cd     
3  You   act2      xy     
4  You   act2      st</code>
ログイン後にコピー

私たちの目標は、UserActivity でグループ化し、各グループの PageURL 値を連結することです。 目的の出力:

<code>User  Activity  PageURL  
Me    act1      ab, cd     
You   act2      xy, st</code>
ログイン後にコピー

STUFF() を使用した SQL Server ソリューション

SQL Server では、GROUP BYSTUFF() 関数を使用してこれを実現できます。

<code class="language-sql">SELECT
    [User], 
    Activity,
    STUFF(
        (SELECT DISTINCT ',' + PageURL
         FROM TableName
         WHERE [User] = a.[User] AND Activity = a.Activity
         FOR XML PATH (''))
        , 1, 1, '') AS URLList
FROM TableName AS a
GROUP BY [User], Activity</code>
ログイン後にコピー

説明:

  • GROUP BY [User], Activity: UserActivity の一意の組み合わせに基づいて行をグループ化します。
  • サブクエリ: 内部の SELECT ステートメントは、各グループの個別の PageURL 値を取得します。 ',' PageURL は、各 URL の前にカンマを追加します。
  • FOR XML PATH(''): これにより、結果セットが単一の文字列に変換され、URL がカンマで効果的に連結されます。
  • STUFF(..., 1, 1, ''): これにより、サブクエリによって追加された先頭のカンマが削除され、きれいなカンマ区切りリストが生成されます。

結論:

このアプローチでは、GROUP BY 句で定義された各グループ内で列の値をカンマ区切りのリストに効果的に結合します。これは、SQL Server でのデータの要約と操作のための多用途の手法です。 文字列連結の特定の関数は、データベース システム (たとえば、MySQL の GROUP_CONCAT) に応じて若干異なる場合があることに注意してください。

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

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