ホームページ >データベース >mysql チュートリアル >複数の SQL 行を単一のカンマ区切り列に連結するにはどうすればよいですか?
複数の行を単一のカンマ区切りフィールドに結合するための SQL テクニック
複数行のデータをコンマで区切って 1 つの列に集約することは、データ操作において頻繁に必要となる要件です。 このガイドでは、Microsoft SQL Server 2005 以降に焦点を当てて、SQL を使用してこの連結を実現する方法を説明します。
SQL Server ソリューションは次のとおりです:
<code class="language-sql">SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS ConcatenatedPersons FROM @Tickets t GROUP BY t.TicketID</code>
このアプローチでは、STUFF
関数を使用して、連結された文字列から先頭のカンマを効率的に削除します。 ネストされたクエリは、FOR XML PATH
を利用して、各 Person
に関連付けられた個々の TicketID
値からカンマ区切りのリストを作成します。 ISNULL
関数は、特定のチケット ID に関連付けられている人物がいない場合を処理します。 結果は、各チケットの人物のカンマ区切りリストを含む 1 つの列 (ConcatenatedPersons
) になります。 この方法は、SQL Server 内で目的の連結を実現するクリーンかつ効率的な方法を提供します。 最適な結果を得るには、この手法を特定のテーブル名と列名に適用してください。
以上が複数の SQL 行を単一のカンマ区切り列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。