資料庫操作中,常常需要產生逗號分隔的值清單。例如,您可能需要在使用者介面中顯示與特定資源關聯的所有應用程式清單。雖然可以遍歷每個資源,檢索應用程式並自行連接它們,但這方法效率低且耗時。
幸運的是,大多數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中文網其他相關文章!