欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

MySQL将查询结果用英文逗号,连接的实现方式

2025年04月12日 Mysql
问题描述-- 创建表create table `person` ( `id` int(11) not null auto_increment comment '用户id', `name` varc

问题描述

-- 创建表
create table `person` (
  `id` int(11) not null auto_increment comment '用户id',
  `name` varchar(255) not null comment '用户名',
  primary key (`id`)
) engine=innodb auto_increment=4 default charset=utf8;

-- 插入数据
insert into `person` values (1, '刘一');
insert into `person` values (2, '陈二');
insert into `person` values (3, '张三');
insert into `person` values (4, '李四');
insert into `person` values (5, '王五');

解决方案

select group_concat(你的字段) from 你的表
  • 如:
select group_concat(name) from person
  • 效果:

  • 封装:
select group_concat(x) from 
(select x from x
where 
group by x) as a

遇到的坑

结果太长,显示不全

  • group_concat_max_len 连接结果的最大长度默认为 1024 ,64 位系统最大为 18446744073709551615
  • 可以临时设置:
# 默认为 1kb
set session group_concat_max_len = 1024;
# 1mb
set session group_concat_max_len = 1048576;
# 10mb
set session group_concat_max_len = 10485760;
# 1gb
set session group_concat_max_len = 1073741824;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。