sql >> Databasteknik >  >> RDS >> Sqlserver

Hur skapar jag en kommaseparerad lista med en SQL-fråga?

MySQL

  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

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(','), '')
 FROM RESOURCES r

SQL Server (2017+)

  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

Oracle

Jag rekommenderar att du läser om strängaggregation/konkatentering i Oracle.



  1. Hämta en bild lagrad som BLOB på en MYSQL DB

  2. NUMTOYMINTERVAL() Funktion i Oracle

  3. Avancerad SQL:Variationer och olika användningsfall av T-SQL Insert Statement

  4. JSON_QUERY() Funktion i Oracle