数据库操作中,常常需要生成逗号分隔的值列表。例如,您可能需要在用户界面中显示与特定资源关联的所有应用程序列表。虽然可以遍历每个资源,检索应用程序并自行连接它们,但这方法效率低下且耗时。
幸运的是,大多数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
Oracle提供多种字符串连接和聚合选项,请熟悉您所用版本的具体语法。
这些查询有效地为每个资源生成逗号分隔的应用程序列表,使您可以通过单个查询为GUI提供必要的信息。
以上是如何使用 SQL 查询生成逗号分隔的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!