本文主要介绍RDS MySQL中group_concat函数的相关问题。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
以下是RDS MySQL中group_concat函数相关问题的详细内容。
group_concat函数返回结果的长度受参数group_concat_max_len控制,默认值为1024,即默认返回1024字节长度的结果。具体参数值请参考如下:
说明:可以设置参数group_concat_max_len在全局生效或会话级别生效,以下是全局生效和会话级别生效的详细内容:
- 全局生效:在控制台的参数设置页面修改。
- 会话级别生效命令依次如下。其中第一个SQL语句是设置当前会话group_concat_max_len为90字节。第二个SQL语句是查看当前会话的group_concat_max_len值。第三个SQL语句是group_conca返回结果。第四个SQL语句是group_concat返回结果的长度。
set group_concat_max_len=90; show variables like 'group_concat_max_len'; select group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---") from grp_con_test t1, grp_con_test t2 \G select length(group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---")) from grp_con_test t1, grp_con_test t2 \G系统显示类似如下。
以下是去重复数据失效的原因和解决方法。
group_concat(distinct)
相关命令去除结果中的重复数据,会出现失效的情况,如下所示。
select group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---")
from grp_con_test t1,
grp_con_test t2 \G
set tmp_table_size=1*1024*1024 show variables like 'tmp_table_size' select group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---") from grp_con_test t1, grp_con_test t2 \G
说明:也可以在控制台的参数设置页面修改tmp_table_size参数。
以下是group_concat和concat结合使用返回异常的原因和解决方法。
select concat('{', group_concat(concat('\"payMoney', t.signature, '\":', ifnull(t.money, 0))), '}') payType
from my_money t
where cash_id='989898989898998898'
group by cash_id;
select concat('{', cast(group_concat(concat('\"payMoney', t.signature, '\":', IFNULL(t.money, 0))) as char), '}') payType
from my_money y t
where cash_id='989898989898998898'
group by cash_id;