介绍MySQLGROUP_CONCAT()函数将group中的字符串拼接成一个具有多种选项的字符串,即实现列的合并。测试创建测试表createtabletest_classes(std_namevarchar(200),class_namevarchar(200));insertintotest_classes(std_name,class_name)value("小明","二等班"),("小红","二等班"),("小刚","二班"),("小强","一班"),("小白","三班"),("小雨","三班");需求:勾选找出三个类分别是谁,用一个字符串字段显示。这时候可以直接使用group_concat语句直接完成。selectclass_name,group_concat(std_name)Assstd_namesfromtest_classesgroupbyclass_name;这里需要按照类显示,所以需要使用group_by进行分组+------------+--------------------+|class_name|std_names|+------------+--------------------+|一级|小强||三班|小白、小雨||二班|小明、小红、小刚|+--------+---------------------+排序:group_concat也支持排序。选择class_name,group_concat(std_nameorderbystd_name)Asstd_namesfromtest_classesgroupbyclass_name;+------------+--------------------+|class_name|std_names|+------------+--------------------+|1级|小强||3级|小白、小鱼||二等班|小刚、小明、小红|+------------+---------------------+重复数据删除:DISTINCT可用于重复数据删除。insertintotest_classes(std_name,class_name)value("小明","二等班");insertintotest_classes(std_name,class_name)value("小明","二等班");选择class_name,group_concat(DISTINCT(std_name))Assstd_namesfromtest_classesgroupbyclass_name;+------------+--------------------+|class_name|std_names|+------------+--------------------+|1类|小强||3类|小白、小雨||2班|小刚、小明、小红|+------------+---------------------+合并多列:可以配合CONCAT_WS将多列合并成一个字符串。selectgroup_concat(CONCAT_WS('of',class_name,std_name)SEPARATOR';')Assstd_namesfromtest_classes;SEPARATOR为指定分隔符```sql+----------------------------------------------------------------------------------------------------------------------------+|std_names|+----------------------------------------------------------------------------------------------------------------------------------+|二班小明;二班二班小红;二班小刚;一班小强;三班小白;三班小雨;二班小明;二班小明|+--------------------------------------------------------------------------------------------------------------------------+长度限制GROUP_CONCAT函数有最大长度限制。如果超过这个长度限制,得到的字符串就是被截取的结果,不会报错,所以需要注意。这是由变量group_concat_max_len控制的长度。showvariableslike"group_concat_max_len";您可以通过修改此变量来扩大限制。SETGLOBALgroup_concat_max_len=102400;SETSESSIONgroup_concat_max_len=102400;配置文件需要在mysqld的quota部分配置[mysqld]group_concat_max_len=102400【小编推荐】我为了写论文提交了“恶意代码”给Linux,结果整个大学都被LinuxinPython封杀了自从那些神一样的算法上了SkyWalking,我睡的真香!!!熬夜三夜,总结了Python的200个标准库!建议收藏MySQL的执行计划到底是什么?
