mysql中group_concat用法_有关mysql中group_concat的用法举例

在对一批mysql数据进行迁移转换时,发现group_concat函数可以简单实现字段的列转行设置。

以下是我的实际操作过程,分享一下,供大家参考。

一,准备些测试数据

复制代码 代码示例:

mysql> use test;

Database changed

mysql> select * from t_kenyon;

+------+

| id   |

+------+

|    1 |

|  123 |

|  789 |

|  345 |

|   78 |

+------+

5 rows in set (0.00 sec)

二,操作步骤

1,以默认的逗号作为分隔符

复制代码 代码示例:

mysql> select group_concat(id) from t_kenyon;

+------------------+

| group_concat(id) |

+------------------+

| 1,123,789,345,78 |

+------------------+

1 row in set (0.00 sec)

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

复制代码 代码示例:

mysql> select group_concat(id order by id) from t_kenyon;

+------------------------------+

| group_concat(id order by id) |

+------------------------------+

| 1,78,123,345,789             |

+------------------------------+

1 row in set (0.00 sec)

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

复制代码 代码示例:

mysql> select group_concat(id separator '*') from t_kenyon;

+--------------------------------+

| group_concat(id separator '*') |

+--------------------------------+

| 1*123*789*345*78               |

+--------------------------------+

1 row in set (0.00 sec)

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

复制代码 代码示例:

mysql> select group_concat(id order by id separator '_') from t_kenyon;

+--------------------------------------------+

| group_concat(id order by id separator '_') |

+--------------------------------------------+

| 1_78_123_345_789                           |

+--------------------------------------------+

1 row in set (0.00 sec)

5,对相同的值分组

复制代码 代码示例:

mysql> insert into t_kenyon values (78);

Query OK, 1 row affected (0.00 sec)

mysql> select group_concat(id) from t_kenyon group by id;

+------------------+

| group_concat(id) |

+------------------+

| 1                |

| 78,78            |

| 123              |

| 345              |

| 789              |

+------------------+

5 rows in set (0.00 sec)

三,参数设置与限制说明

1.查看服务器中设置

复制代码 代码示例:

mysql> show variables like '%group_concat%';

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| group_concat_max_len | 1024  |

+----------------------+-------+

1 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;

就是这些了,希望对有缘的人有所帮助,哈!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值