使用SQL查詢建立逗號分隔清單
當多個表包含應用程式和資源資料時,一個常見的任務是列出一個表,其中列出所有資源名稱以及用逗號分隔的關聯應用程式名稱。若要使用單一SQL查詢實現此目的,請依照下列步驟操作:
MySQL:
<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 (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(','), '') AS application_names FROM RESOURCES r</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: Oracle 提供多種字串聚合/連線選項。請參考文件以了解具體的語法和要求。
這些查詢將「RESOURCES」表與「APPLICATIONSRESOURCES」和「APPLICATIONS」表連接起來,以檢索資源名稱和關聯的應用程式名稱。 「GROUP_CONCAT」、「STUFF」或「STRING_AGG」函數隨後用於將應用程式名稱連接到每個資源的逗號分隔清單。 為了提高可讀性,我們為結果欄位新增了別名 application_names
。
以上是如何在 SQL 中建立關聯應用程式名稱的逗號分隔清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!