
在MySQL中,GROUP_CONCAT() 函数是一个聚合函数,用于将来自多个行的字符串值连接成一个字符串。它通常与 GROUP BY 子句一起使用,以便对特定组的数据进行汇总。GROUP_CONCAT() 函数非常有用,当你需要将多行数据合并成一个单独的字符串时,比如生成逗号分隔的列表。
GROUP_CONCAT([DISTINCT] expression [,expression ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])假设我们有一个名为 employees 的表
CREATE TABLE employees (
id INT,
department VARCHAR(50),
name VARCHAR(50)
); INSERT INTO employees (id, department, name) VALUES
(1, 'Sales', 'Alice'),
(2, 'Sales', 'Bob'),
(3, 'HR', 'Charlie'),
(4, 'HR', 'David');此查询将 employees 表中的数据按 department 列进行分组,并使用 GROUP_CONCAT() 函数将每个分组中 name 列的值连接成一个以逗号分隔的字符串。
SELECT department, GROUP_CONCAT(name) AS employee_names
FROM employees
GROUP BY department;department | employee_names |
|---|---|
Sales | Alice,Bob |
HR | Charlie,David |
GROUP_CONCAT() 函数将每个部门中所有员工的姓名连接成一个逗号分隔的字符串。例如,Sales 部门有 Alice 和 Bob 两名员工,所以它们的姓名被连接成 “Alice,Bob”。
此查询将 employees 表中的数据按 department 列进行分组,并使用 GROUP_CONCAT(name ORDER BY name ASC) 函数将每个分组中 name 列的值按字母顺序连接成一个以逗号分隔的字符串。
SELECT department, GROUP_CONCAT(name ORDER BY name ASC) AS employee_names
FROM employees
GROUP BY department;department | employee_names |
|---|---|
Sales | Alice,Charlie |
HR | Bob,David |
GROUP_CONCAT(name ORDER BY name ASC) 函数确保每个部门中的员工姓名按字母顺序排列。
此查询将 employees 表中的数据按 department 列进行分组,并使用 GROUP_CONCAT(name SEPARATOR '; ') 函数将每个分组中 name 列的值连接成一个以分号加空格分隔的字符串。
SELECT department, GROUP_CONCAT(name SEPARATOR '; ') AS employee_names
FROM employees
GROUP BY department;department | employee_names |
|---|---|
Sales | Alice; Bob |
HR | Charlie; David |
GROUP_CONCAT(name SEPARATOR '; ') 函数允许你指定一个自定义的分隔符来连接每个分组中的值。在这个例子中,我们使用分号加空格作为分隔符。