ホームページ >データベース >mysql チュートリアル >SQL を使用して応答 ID に基づいてラベルを連結するにはどうすればよいですか?

SQL を使用して応答 ID に基づいてラベルを連結するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-31 21:36:11262ブラウズ

How to Concatenate Labels Based on Response ID Using SQL?

ID に基づく値の連結: SQL を使用したソリューション

データを操作する場合、共有 ID に基づいて値を連結する必要が頻繁に発生します。 。このシナリオでは、応答 ID とそれに関連付けられたラベルのリストを含むテーブルが表示されます。私たちの目標は、このデータを、各行に応答 ID とラベルのカンマ区切りリストが表示される形式に変換することです。

これを実現するには、SQL のグループ化機能と連結機能を活用できます。まず、@T という一時テーブルを宣言し、そこにサンプル データを設定します。以下のクエリは、関連する手順の概要を示しています。

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
  1. グループ化: group by T1.Response_ID 句を使用して、Response_ID によってデータをグループ化します。この手順により、応答 ID ごとに単一のラベル セットを操作できるようになります。
  2. サブクエリ: 各グループ内で、サブクエリを使用して、その応答 ID に関連付けられたラベルを取得します。サブクエリはラベル値を取得し、それらをカンマで区切られた単一の文字列に結合します。 .value('.', 'varchar(max)') 部分は、ラベルに XML に適さない文字が含まれている場合を処理します。
  3. 連結: を連結するために、stuff() 関数が使用されます。カンマ区切りのラベルを 1 つの文字列にまとめます。削除引数として 1, 1, '' を指定することで、先頭のコンマを削除します。
  4. Projection: 最後に、select ステートメントは、Response_ID と連結された Label 列を目的の出力として投影します。

このクエリを実行すると、各行が対応する応答 ID を表す変換されたデータを取得します。ラベルをカンマで区切って連結します。このソリューションは、共有識別子に基づいてデータを集約して表示する効率的な方法を提供します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。