資料庫任務經常需要將資料欄位連接成逗號分隔的清單。 SQL 提供了高效的解決方案,無需過程程式碼。
範例:想像三個表:Applications
(id,名稱)、Resources
(id,名稱)和 ApplicationsResources
(id、app_id、resource_id)。目標是產生一份報告,顯示每個資源名稱以及以逗號分隔的關聯應用程式清單。
這可以使用 GROUP_CONCAT
(MySQL 和某些 SQL Server 版本)或 STRING_AGG
(SQL Server 2017 及更高版本)來實現。這些函數有效地連接按特定列分組的值。
MySQL/某些 SQL Server 版本:
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') AS application_names 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 2017 及更高版本:
<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') AS application_names 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 提供了多種字串聚合方法,包括 LISTAGG
和 DBMS_PCL_ROWPKT
套件。有關詳細說明,請參閱 Oracle 文件。
這種基於 SQL 的方法提供了一種直接在資料庫查詢中產生逗號分隔清單的簡化方法,從而改進了應用程式和 GUI 中的資料呈現。
以上是如何使用 SQL 從關聯式資料庫表中高效率建立逗號分隔清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!