MySQL 是一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。當(dāng)我們需要對(duì)一些數(shù)據(jù)進(jìn)行計(jì)算或統(tǒng)計(jì)時(shí),往往需要先對(duì)數(shù)據(jù)進(jìn)行分組,然后按照某種方式進(jìn)行匯總計(jì)算。在 MySQL 中,我們可以使用 Group By 子句來實(shí)現(xiàn)分組,使用 Aggregate Funcitons(聚合函數(shù))實(shí)現(xiàn)計(jì)算。但有時(shí)候我們還需要將分組后的數(shù)據(jù)進(jìn)行數(shù)組合并,這時(shí)可以使用 GROUP_CONCAT 函數(shù)。
GROUP_CONCAT 函數(shù)的語法如下:
SELECT column_name, GROUP_CONCAT(expression SEPARATOR separator) FROM table_name GROUP BY column_name;
其中:
- column_name:指定要分組的列名。
- expression:指定要合并的數(shù)組??梢允橇忻?,也可以是常量或表達(dá)式。如果要合并多個(gè)列,可以使用 CONCAT_WS 函數(shù)。
- SEPARATOR:指定數(shù)組元素之間的分隔符。
下面是一個(gè)例子,我們有一張 student 表,其中包含學(xué)生的姓名、年齡和所在班級(jí)。現(xiàn)在我們要按照班級(jí)進(jìn)行分組,并將每個(gè)班級(jí)的學(xué)生姓名合并成數(shù)組。
SELECT class, GROUP_CONCAT(name SEPARATOR ', ') AS students FROM student GROUP BY class;
運(yùn)行以上語句,將得到如下結(jié)果:
+---------+-------------------------------+ | class | students | +---------+-------------------------------+ | Class A | Tom, Jerry, Alice, Lucy | | Class B | Bob, Frank, Andy, Kate, Peter | | Class C | John, Mike, Jane | +---------+-------------------------------+
從以上結(jié)果可以看出,GROUP_CONCAT 函數(shù)將每個(gè)班級(jí)的學(xué)生姓名合并成了一個(gè)以逗號(hào)分隔的數(shù)組。