MYSQL函数group_concat的使用

今天对一批数据要迁移转换,查了下,有group_concat这个函数简单实现字段的列转行设置,过程记录如下

一.测试数据准备

1mysql> use test; 2Database changed 3mysql> select * from t_kenyon; 4+------+ 5| id | 6+------+ 7| 1 | 8| 123 | 9| 789 | 10| 345 | 11| 78 | 12+------+ 135 rows in set (0.00 sec)

二.使用经过
1.以默认的逗号作为分隔符

1mysql> select group_concat(id) from t_kenyon; 2+------------------+ 3| group_concat(id) | 4+------------------+ 5| 1,123,789,345,78 | 6+------------------+ 71 row in set (0.00 sec)

2.对ID值进行排序后行转列

1mysql> select group_concat(id order by id) from t_kenyon; 2+------------------------------+ 3| group_concat(id order by id) | 4+------------------------------+ 5| 1,78,123,345,789 | 6+------------------------------+ 71 row in set (0.00 sec)

3.使用其他分割符,如*和;等

1mysql> select group_concat(id separator '*') from t_kenyon; 2+--------------------------------+ 3| group_concat(id separator '*') | 4+--------------------------------+ 5| 1*123*789*345*78 | 6+--------------------------------+ 71 row in set (0.00 sec)

4.分隔符与排序结合起来用

1mysql> select group_concat(id order by id separator '_') from t_kenyon; 2+--------------------------------------------+ 3| group_concat(id order by id separator '_') | 4+--------------------------------------------+ 5| 1_78_123_345_789 | 6+--------------------------------------------+ 71 row in set (0.00 sec)

5.对相同的值分组

1mysql> insert into t_kenyon values (78); 2Query OK, 1 row affected (0.00 sec) 3 4mysql> select group_concat(id) from t_kenyon group by id; 5+------------------+ 6| group_concat(id) | 7+------------------+ 8| 1 | 9| 78,78 | 10| 123 | 11| 345 | 12| 789 | 13+------------------+ 145 rows in set (0.00 sec)

三.参数设置与限制说明
1.查看服务器中设置

1mysql> show variables like '%group_concat%'; 2+----------------------+-------+ 3| Variable_name | Value | 4+----------------------+-------+ 5| group_concat_max_len | 1024 | 6+----------------------+-------+ 71 row in set (0.00 sec)

以上设置的值说明当前是默认长度1KB

 2.改变参数值
方法一:修改配置文件中参数,新增 group_concat_max_len = 10240
方法二:在会话中实现,全局或当前session中
SET GLOBAL group_concat_max_len=10240;
SET SESSION group_concat_max_len=10240;

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移