ホームページ >データベース >mysql チュートリアル >SQLで複数の行を単一の文字列に連結するにはどうすればよいですか?
ID に基づいた値の連結
データ操作では、多くの場合、複数の行のデータを 1 つの文字列に結合する必要があります。これは、文字列が小さなフラグメントから組み立てられる連結によって実現できます。
問題ステートメント:
2 つの列を持つ「Results」というテーブルがあります。 Response_ID」と「ラベル」。各「Response_ID」は複数の「Label」値に対応します。目標は、「Response_ID」ごとに 1 行の新しいテーブルを生成し、すべての「Label」値をカンマで区切って 1 つの文字列に連結することです。
解決策:
「Response_ID」に基づいて値を連結するには、次の SQL を使用できます。クエリ:
select T1.Response_ID, stuff((select ','+T2.Label from Results as T2 where T1.Response_ID = T2.Response_ID for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label from Results as T1 group by T1.Response_ID
説明:
スタッフ():この関数は文字列を連結します。次の引数を受け取ります:
例:
次のように考えます。 table:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Understand |
12458 | Was not resolved |
12458 | Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
上記のクエリは次の出力を生成します:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Understand,Was not resolved,Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
注: 連結された文字列の順序は、常に予測できるとは限りません。順序を正確に制御するには、サブクエリで「ORDER BY」ステートメントを使用できます。
以上がSQLで複数の行を単一の文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。