文章目录
前言
在SQL查询中,将多个字段的值以逗号分隔拼接成一个字符串,可以使用数据库提供的字符串聚合函数。
1. 解决方案概述
不同的数据库系统有不同的实现方式:
MySQL:使用GROUP_CONCAT
函数
SQL Server:使用STRING_AGG
函数(SQL Server 2017及以上)或FOR XML PATH
方法
Oracle:使用LISTAGG
函数
PostgreSQL:使用STRING_AGG
函数
2. 实现方法
2.1 MySQL
-- 示例表:employees
-- 字段:id, name, department
SELECT
department,
GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS employee_names
FROM
employees
GROUP BY
department;
2.2 SQL Server (2017及以上)
-- 示例表:employees
-- 字段:id, name, department
SELECT
department,
STRING_AGG(name, ', ') WITHIN GROUP (ORDER BY name ASC) AS employee_names
FROM
employees
GROUP BY
department;
2.3 SQL Server (2016及以下)
-- 示例表:employees
-- 字段:id, name, department
SELECT
department,
STUFF((
SELECT ', ' + name
FROM employees e2
WHERE e2.department = e1.department
ORDER BY name
FOR XML PATH