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 ; pre>这个需要按照类来显示,所以需要使用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合并列。希望以上内容继续可以对大家有一定的帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL中如何使用group_concat合并列