Mysql 合并某一列的值(将某列的值串联起来)
有时我们需要将某列的值合并起来,那么我们可以怎么来实现呢?
可以用 group_concat() 函数来实现
例子:
若想简单深入了解一下 group_concat() 函数,可继续查看
group_concat()
说明:函数返回一个字符串结果,串联起组中的非空值
语法:
group_concat([distinct] expr [,expr ...]
[order by {unsigned_integer | col_name | expr}
[asc | desc] [,col_name ...]]
[separator str_val])
返回值:返回一个字符串结果
参数说明:
distinct :可用 distinct 来消除重复值
order by :可用 order by 来对结果中的值进行排序
separator:可用 separator 来指定分割符,默认是 逗号
若不想有分隔符,可用 separator '' 来实现
例子:
补充:
若返回的结果将被截断为了,并没有返回所有的字符。
那是因为超出了 group_concat_max_len 的最大长度,默认值为1024;
我们只需更改 group_concat_max_len 的值即可
语法如下,其中val 是一个无符号整数:
set [global | session] group_concat_max_len = val;
SQL 汇集:
-- 创建测试表
drop table if exists test_01;
create table test_01(id int ,name varchar(10));
-- 写入测试数据
insert into test_01 values(1,'MySQL');
insert into test_01 values(2,'SQL Server');
insert into test_01 values(3,'Oracle');
insert into test_01 values(4,'MongoDB');
insert into test_01 values(5,'SQLite');
insert into test_01 values(5,NUll);
insert into test_01 values(6,'Oracle');
-- 查看测试数据
select * from test_01;
-- 例子
select group_concat(name) result from test_01;
-- ;例子
select group_concat(id,'->[', name ,']') result from test_01 union all
select group_concat(name
order by name desc) from test_01 union all
select group_concat(distinct name
separator '、') from test_01;
希望对你有帮助!!!