ホームページ > データベース > mysql チュートリアル > FOR XML PATH() を使用して T-SQL の複数のレコードからユーザー名を連結する方法

FOR XML PATH() を使用して T-SQL の複数のレコードからユーザー名を連結する方法

Barbara Streisand
リリース: 2025-01-15 06:58:42
オリジナル
186 人が閲覧しました

How to Concatenate User Names from Multiple Records in T-SQL Using FOR XML PATH()?

T-SQL 内のユーザー名と FOR XML PATH() を効率的に組み合わせる

課題: 多対多の関係を持つ複数のテーブルが関与する複雑なデータベース構造内の複数のレコードからユーザー名を結合する必要があります。 目的は、2 つのテーブルのデータを表示しながら、3 番目のテーブルの名前を連結して、各レビューに関連付けられたユーザーの名 (FName) のカンマ区切りリストを作成することです。

解決策: FOR XML PATH() の活用

FOR XML PATH() メソッドは、この文字列連結タスクに対する簡潔なソリューションを提供します。 T-SQL コードは次のとおりです:

<code class="language-sql">SELECT  *,
        ( 
            SELECT  u.FName + ','
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ) AS UserNames
FROM    @Reviews r</code>
ログイン後にコピー

内訳:

  • メインの SELECT ステートメントは、* テーブルからすべての列 (@Reviews) を取得します。
  • ネストされた SELECT ステートメントは連結を実行します。 @Users を使用して @Reviewers テーブルと UserID テーブルを結合し、ユーザーをレビューにリンクします。
  • WHERE 句は、現在のレビューに関連付けられているユーザー (ReviewID と一致するユーザー) のみを含めるようにユーザーをフィルターします。
  • FOR XML PATH('') は、連結された FName 値を単一の XML 文字列に変換し、実質的にカンマ区切りのリストを作成します (末尾のカンマを処理する必要があります。以下を参照)。
  • 結果は UserNames 列に割り当てられます。

出力と絞り込み:

このクエリは、望ましい結果を生成します。各レビューの詳細 (ReviewID、ReviewDate など) が、関連付けられたユーザーの名をカンマで区切ったリストと一緒に表示されます。 末尾のカンマを削除するには、STUFF 関数を使用できます。

<code class="language-sql">SELECT  *,
        STUFF(( 
            SELECT  ',' + u.FName
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ), 1, 1, '') AS UserNames
FROM    @Reviews r</code>
ログイン後にコピー

この改良版では、',' u.FName を使用してカンマを先頭に追加し、STUFF で先頭のカンマを削除して、ユーザー名のきれいなカンマ区切りリストを提供します。

以上がFOR XML PATH() を使用して T-SQL の複数のレコードからユーザー名を連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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