MySQL中如何使用group_concat合并列

分类:编程技术 时间:2024-02-20 15:26 浏览:0 评论:0
0
本文介绍如何在MySQL中使用group_concat合并列。内容非常详细。有兴趣的朋友可以参考一下。希望对大家有所帮助。

测试

创建测试表进行测试

create table test_classes (std_name varchar(200),class_name varchar(200)); insert into test_classes (std_name , class_name ) value ("小明", "班级 2") , ("小红", "班级 2") , ("小刚", "班级 2"), ("小强", "班级1"班级"),("小白","三班"),("小宇","三班");

要求:找出三班各有谁,并使用String字段显示。

此时可以直接使用group_concat语句完成。

select class_name , group_concat(std_name) As std_names from test_classes group by class_name ;

select class_name , group_concat(std_name) As std_names from test_classes group by class_name ;

这个需要按照类来显示,所以需要使用group_by进行分组

+ ------------+-------- ----------------+ | 类名 | std_names| +----------------+----------------------+ | 1 级 |小强| 3 级 |白小强,小宇                                                                                    ---+

排序:group_concat 中也支持排序。

select class_name , group_concat(std_name order by std_name) As std_names from test_classes group by class_name ;


+-----------+--------------------- -+ |类名 |标准名称 | +------------+- ---------------------+ | 1 级 |小强|三班|小白、小宇|第二类|小刚、小明、小红| +------------+--------- -------------+

重复数据删除:可以使用 DISTINCT删除重复项。

insert into test_classes (std_name , class_name ) value ("小明", "班级2");

insert into test_classes (std_name , class_name ) value ("小明" ,"Class 2");

选择 class_name 、 group_concat(DISTINCT(std_name)) 作为 test_classes 组中的 std_names by claSS_名称;


+-- ----------+------------------------ -+ |类名 |标准名称 | +------------+-- --------------------+ | 1 级 |小强| 3 级 |小白、小宇| | 2 级 |小刚、小明、小红| + ------------+---------------------+

合并多列:可以使用使用 CONCAT_WS 将多个列合并为一个字符串。

select group_concat(CONCAT_WS('',class_name,std_name) SEPARATOR ';') As std_names from test_classes; SEPARATOR 是指定分隔符 ```sql +------------ ------------------------------ -------------------------------------------------- -------------------- --------------------+ | std_names                                                                                                                                   ------------------------------------------------- - ------------------------------------------------- - ----+ |二班小明;二班肖红;二班小刚;一班肖强; X三班的iao Bai;三班小宇;二班小明;二班小明| +------------------------------------------------ -------------------------------------------------- ----------------------------------+

长度限制

< p>GROUP_CONCAT 函数有最大长度限制。如果超过这个长度限制,得到的字符串将是截取的结果,不会报错,需要注意。

这是由变量group_concat_max_len控制的长度。

显示类似“group_concat_max_len”的变量;

可以通过修改此变量来扩大限制。

设置全局 group_concat_max_len=102400; SET SESSION group_concat_max_len=102400;

配置文件需要在mysqld的quota部分配置

[mysqld] group_concat_max_len=102400

我在这里分享一下如何在MySQL中使用group_concat合并列。希望以上内容继续可以对大家有一定的帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL中如何使用group_concat合并列

用户评论