group_concat()是将同一组的行数据进行拼接,但是group_concat对字符长度是有限制的,
语法:
GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY 排序字段 /desc] [Separator ‘分隔符’])
-- 测试数据
drop table test1;
CREATE TABLE `test1` (
name varchar(20),
`id` int(11) NOT NULL COMMENT 'id',
`age` int(11),
address varchar(20)
);
#插入测试数据
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('小明',1, 20,'北京');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('小红',2, 20,'上海');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('李华',3, 10,'北京');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('Tom',4, 30,'北京');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('Mark',5, 40,'成都');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('张三',6, 40,'成都');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('王五',7, 50,'上海');
INSERT INTO test1 (name,`id`, `age`,address) VALUES ('徐奥六',8, 60,'上海');
以上这张表,我们就可以按照城市分组,对姓名进行拼接
select address, group_concat(name /[Separator ‘分隔符’] )from test_group_concat group by address;
注意:group_concat 有长度限制,默认1024个字符,如果遇见长度不够的字段,则可以进行修改
-- 查看group_concat的 字符长度
show variables like "group_concat_max_len";
-- group_concat 字符长度限制修改
-- 两种都可以进行修改
SET GLOBAL group_concat_max_len=指定字符长度;
SET SESSION group_concat_max_len=指定字符长度