ホームページ > データベース > mysql チュートリアル > 複数の T-SQL レコードのフィールドをカンマ区切りの文字列に連結するにはどうすればよいですか?

複数の T-SQL レコードのフィールドをカンマ区切りの文字列に連結するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-15 08:21:43
オリジナル
638 人が閲覧しました

How to Concatenate Fields from Multiple T-SQL Records into a Comma-Separated String?

T-SQL の別のフィールドによって複数のレコードのフィールドをグループ化する

この記事では、2 つのテーブル内の複数のレコードに関連付けられたフィールド値をグループ化する手法について説明します。 Reviews、Reviewers、および Users テーブルのデータを組み合わせることで、FName フィールドをカンマ区切りの文字列に連結できます。

<code class="language-sql">-- 示例数据
DECLARE @Reviews TABLE(
        ReviewID INT,
        ReviewDate DATETIME
)

DECLARE @Reviewers TABLE(
        ReviewerID   INT,
        ReviewID   INT,
        UserID INT
)

DECLARE @Users TABLE(
        UserID  INT,
        FName  VARCHAR(50),
        LName VARCHAR(50)
)

INSERT INTO @Reviews SELECT 1, '12 Jan 2009'
INSERT INTO @Reviews SELECT 2, '25 Jan 2009'

INSERT INTO @Users SELECT 1, 'Bob', ''
INSERT INTO @Users SELECT 2, 'Joe', ''
INSERT INTO @Users SELECT 3, 'Frank', ''
INSERT INTO @Users SELECT 4, 'Sue', ''
INSERT INTO @Users SELECT 5, 'Alice', ''

INSERT INTO @Reviewers SELECT 1, 1, 1
INSERT INTO @Reviewers SELECT 2, 1, 2
INSERT INTO @Reviewers SELECT 3, 1, 3
INSERT INTO @Reviewers SELECT 4, 2, 4
INSERT INTO @Reviewers SELECT 5, 2, 5</code>
ログイン後にコピー

ネストされた SELECT と FOR XML PATH() を使用したソリューション

FOR XML PATH() 演算子を使用すると、FName 値を単一の文字列に連結できます。

<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>
ログイン後にコピー

このクエリは次の結果を返します:

<code>ReviewID  ReviewDate  UserNames
1          12 Jan 2009  Bob,Joe,Frank
2          25 Jan 2009  Sue,Alice</code>
ログイン後にコピー

結論

FOR XML PATH() 関数を使用して、異なるテーブル内の複数のレコードのフィールド値を共通のフィールドでグループ化することに成功しました。この手法は、連結された文字列表現が必要なシナリオに適用できます。

以上が複数の T-SQL レコードのフィールドをカンマ区切りの文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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