產生逗號分隔的清單:SQL 方法
高效呈現聚合資料對於資料庫管理至關重要。 這通常涉及創建逗號分隔的清單。 讓我們研究一下如何使用單一 SQL 查詢來實現這一點,並專注於不同的資料庫系統。 我們將使用包含 Applications
、Resources
和 ApplicationsResources
表的資料庫架構。目標是顯示每個資源的名稱及其關聯應用程式的逗號分隔清單。
最佳化的單一查詢解
為了避免與多個查詢相關的效能問題,單一查詢是最有效的方法。 這涉及連接相關表並使用適當的字串聚合函數。 特定功能因資料庫系統而異:GROUP_CONCAT
(MySQL)、STUFF
(SQL Server 2005)、STRING_AGG
(SQL Server 2017)或Oracle內建的字串聚合方法。
特定於資料庫的實作
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') AS application_list 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>
STUFF
函數:<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 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS application_list FROM RESOURCES r;</code>
STRING_AGG
函數:<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') AS application_list 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>
LISTAGG
或類似的字串聚合技術。 具體語法請查閱Oracle文件。 總結
這些單一查詢解決方案提供了為每個資源產生關聯應用程式的逗號分隔清單的有效方法。 函數的選擇取決於所使用的資料庫系統,確保應用程式使用者介面的最佳效能和資料呈現。
以上是如何在 SQL 中高效率建立逗號分隔的關聯應用程式清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!