使用SQL查詢創建逗號分隔列表
當多個表包含應用程序和資源數據時,一個常見的任務是列出一個表,其中列出所有資源名稱以及用逗號分隔的關聯應用程序名稱。要使用單個SQL查詢實現此目的,請按照以下步驟操作:
MySQL:
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
SQL Server (2005 ):
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
SQL Server (2017 ):
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
Oracle: Oracle 提供多種字符串聚合/連接選項。請參考文檔了解具體的語法和要求。
這些查詢將“RESOURCES”表與“APPLICATIONSRESOURCES”和“APPLICATIONS”表連接起來,以檢索資源名稱和關聯的應用程序名稱。 “GROUP_CONCAT”、“STUFF”或“STRING_AGG”函數隨後用於將應用程序名稱連接到每個資源的逗號分隔列表中。 為了提高可讀性,我們為結果列添加了別名 application_names
。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3