データベース操作中に、カンマ区切りの値のリストを生成することが必要になることがよくあります。たとえば、ユーザー インターフェイスの特定のリソースに関連付けられているすべてのアプリケーションのリストを表示したい場合があります。各リソースをループしてアプリケーションを取得し、それらを自分で接続することも可能ですが、このアプローチは非効率的で時間がかかります。
幸いなことに、ほとんどの SQL データベースには、組み込みの文字列連結関数と集計関数が用意されています。以下は、一般的に使用されるいくつかの SQL 方言の実装方法です:
MySQL
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name</code>
SQL Server (2005)
<code class="language-sql">SELECT r.name, STUFF((SELECT ',' + a.name FROM APPLICATIONS a JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id WHERE ar.resource_id = r.id GROUP BY a.name FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '') FROM RESOURCES r</code>
SQL Server (2017)
<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name</code>
オラクル
Oracle はさまざまな文字列の連結および集計オプションを提供しています。使用しているバージョンの特定の構文をよく理解してください。
これらのクエリは、リソースごとにアプリケーションのカンマ区切りリストを効率的に生成するため、単一のクエリで必要な情報を GUI に提供できます。
以上がSQL クエリを使用してカンマ区切りのリストを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。