GROUP_CONCAT
是 MySQL 中的一个函数,它将多行中的值连接成一个单一的字符串。通常与 GROUP BY
子句一起使用,以便在每个组内进行值的连接。以下是基本语法:
GROUP_CONCAT([DISTINCT] expr [, expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [, ...]]
[SEPARATOR str_val]
[LIMIT {[offset,] row_count | row_count OFFSET offset}])
主要参数解释:
-
DISTINCT
: 可选的关键字,用于指定仅包括唯一值。 -
expr
: 要连接的表达式或列的名称。 -
ORDER BY
: 用于指定连接后的值的排序方式。 -
ASC | DESC
: 可选的关键字,用于指定升序(默认)或降序排序。 -
SEPARATOR
: ,用于指定连接值之间的分隔符。默认分隔符是逗号(,
)。 -
LIMIT
: 可选的子句,用于限制连接后的字符串的长度。
例1(exper, order by参数):
SELECT department, GROUP_CONCAT(employee_name)
FROM employees
GROUP BY department;
在此示例中,它将为每个唯一的 department
连接 employee_name
的值。
您还可以在 GROUP_CONCAT
中使用 ORDER BY
,以指定连接值的顺序:
SELECT department, GROUP_CONCAT(employee_name ORDER BY hire_date)
FROM employees
GROUP BY department;
这将为每个部门内的 employee_name
值进行连接,并按 hire_date
排序。
例2(distinct关键字, order by, seperator)leetcode 1484.
select sell_date,
count(distinct product) num_sold,
group_concat(distinct product order by product separator ',') products
from Activities
group by sell_date
order by sell_date
group_concat(distinct product order by product separator ',') 将不同日期的不同产品按照字典序顺序进行连接,分隔符是‘,’。
返回的表格形式如下所示: