ホームページ > データベース > mysql チュートリアル > 共通の識別子に基づいて複数の SQL 値を連結するにはどうすればよいですか?

共通の識別子に基づいて複数の SQL 値を連結するにはどうすればよいですか?

DDD
リリース: 2024-12-30 22:21:10
オリジナル
160 人が閲覧しました

How to Concatenate Multiple SQL Values Based on a Common Identifier?

SQL を使用して共通の識別子に基づいて複数の値を連結する

Response_ID と Label の 2 つの列があるテーブルがあるとします。ここで、複数の Label値を各Response_IDに関連付けることができます。一意の Response_ID ごとにすべての Label 値を連結する必要が生じる場合があります。

これは、次の SQL ステートメントを使用して実現できます:

-- Sample data
declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

-- Query to concatenate Label values
select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID
ログイン後にコピー

説明:

  • サブクエリ (select ',' T2.Label ...) は、各 Response_ID の Label 値を単一の Response_ID に連結します。カンマで区切られた文字列。 for xml path('')、type 句は、連結された文字列を XML フラグメントに変換します。
  • .value('.', 'varchar(max)') 部分は、ラベルに次のような文字が含まれる場合を処理します。 & などの XML 解析エラーが発生する可能性があります。
  • stuff(...) 関数は、連結されたデータから先頭のカンマを削除します。 string.
  • 最後に、group by 句により、一意の Response_ID ごとに連結された Label 値が集計されます。

結果は、Response_ID ごとに 1 行のテーブルと連結された Label 値になります。カンマで区切ります。

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

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