Mysql CONCAT,GROUP_CONCAT

MySQL中使用group_concat遇到的问题及解决 在使用group_concat的过程中遇到个问题,这里记录一下:在中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是1024。查询group_concat_max_len大小:修改group_concat_max_len大小:方法一:这种方法可以在不重启的情况下使用,但是如果重启服务器后会还原配置。可以通过修改(my.ini)配置文件来彻底解决这个问题。方法二:修改(my.ini)配置文件,需要重启服务器后才能生效。 阅读详情
-- 初始化临时表以及数据
CREATE TEMPORARY TABLE IF NOT EXISTS data1
(
	Id INT NOT NULL,
	L1 VARCHAR(36) NULL,
	L2 VARCHAR(36) NULL,
	adt_redundancy VARCHAR(255) NULL
);

CREATE TEMPORARY TABLE IF NOT EXISTS templancode
(
	CultureCode VARCHAR(20) not NULL
);

CREATE TEMPORARY TABLE IF NOT EXISTS templanlike
(
	itemid VARCHAR(36) NULL,
	CultureCode VARCHAR(20) NULL,
	ItemContent VARCHAR(100) NULL
);

-- 语言种类表
TRUNCATE TABLE templancode;
-- 多语言表
TRUNCATE TABLE templanlike;
-- 业务数据表
TRUNCATE TABLE data1;

INSERT INTO templancode VALUES('zhCN'),('enUS'),('deDE');
INSERT INTO templanlike VALUES('z1','zhCN','语文'),('z1','enUS','Chinese'),('z1','deDE','Sprachen.');
INSERT INTO templanlike VALUES('z2','zhCN','数学'),('z2','enUS','Math'),('z2','deDE','Mathe.');
INSERT INTO templanlike VALUES('z3','zhCN','英语'),('z3','enUS','English'),('z3','deDE','Englisch.');

INSERT INTO data1(id,L1,L2) VALUES(1,'z1','z2'),(2,'z3',''),(3,'','');

SELECT * FROM templancode; SELECT * FROM templanlike; SELECT * FROM data1;

-- 将Key为z1的多语言内容转换为Json字符
SELECT GROUP_CONCAT(CONCAT('"',p3.CultureCode,'":"',
	 (SELECT p4.ItemContent FROM templanlike AS p4 
		WHERE p4.CultureCode=p3.CultureCode AND p4.itemid='z1'),'"')) as z1lan
FROM templancode as p3;

在这里插入图片描述

-- 拼接业务表字段L1的多语言内容
SELECT p0.Id,p0.L1,p0.L2,
		(SELECT GROUP_CONCAT(CONCAT('"',p1.CultureCode,'":"',
	 (SELECT p2.ItemContent FROM templanlike AS p2 
		WHERE p2.CultureCode=p1.CultureCode AND p2.itemid=p0.L1),'"'))
		FROM templancode as p1) as L1Language
FROM data1 as p0

在这里插入图片描述

-- 更新多语言冗余字段
UPDATE data1 SET adt_redundancy=CONCAT(
'"L1":{',
(SELECT GROUP_CONCAT(CONCAT('"',p1.CultureCode,'":"',
	 ifnull((SELECT p2.ItemContent FROM templanlike AS p2 
		WHERE p2.CultureCode=p1.CultureCode AND p2.itemid=data1.L1),''),'"'))
		FROM templancode as p1)
,'}'
);

UPDATE data1 SET adt_redundancy=CONCAT(adt_redundancy,
',"L2":{',
(SELECT GROUP_CONCAT(CONCAT('"',p1.CultureCode,'":"',
	 ifnull((SELECT p2.ItemContent FROM templanlike AS p2 
		WHERE p2.CultureCode=p1.CultureCode AND p2.itemid=data1.L2),''),'"'))
		FROM templancode as p1)
,'}'
);

SELECT * from data1;

-- 改代码块涉及到的临时表不能在一同语句中重复使用,可以创建实体表进行执行
/*
UPDATE data1 SET adt_redundancy=CONCAT(
'{"L1":',
(SELECT GROUP_CONCAT(CONCAT('"',p1.CultureCode,'":"',
	 (SELECT p2.ItemContent FROM templanlike AS p2 
		WHERE p2.CultureCode=p1.CultureCode AND p2.itemid=data1.L1),'"'))
		FROM templancode as p1)
,'}',
'{"L2":',
(SELECT GROUP_CONCAT(CONCAT('"',p3.CultureCode,'":"',
	 (SELECT p4.ItemContent FROM templanlike AS p4 
		WHERE p4.CultureCode=p1.CultureCode AND p4.itemid=data1.L2),'"'))
		FROM templancode as p3)
,'}'
);
*/
MySQL中使用Group Concat的问题及解决方案 通过采用适当的解决方案,我们可以克服这些问题,并正确地使用Group Concat函数来满足我们的需求。当使用Group Concat函数时,如果连接后的字符串超过了默认的最大长度限制,结果会被截断,导致丢失部分数据。将column_name替换为要连接的列名,table_name替换为表名,分号可以替换为任何您想要的分隔符。在Group Concat函数中,默认使用逗号作为连接多个值的分隔符。在使用Group Concat时,结果的顺序可能是不确定的,这取决于MySQL的内部实现和查询优化器。 阅读详情

相关推荐

LabVIEW+数据库应用系列保姆级教程,第二篇增删查改

2021-7-2 先挖好坑

wwplh5520370的博客 7364

一次数据库查询group_concat报错“Row XXX was cut by GROUP_CONCAT()”的解决

MySql数据库查询时(后面),使用group_concat报错“Row XXX was cut by GROUP_CONCAT()”,单独查询不会报错,当我要查询的数据更新到另外个表中的字段时,会报这个错,网上查了下是因为GROUP_CONCAT有个最大长度的限制,超过最大长度就会被截断掉,可以通过 SELECT @@global.group_concat_max_len; 查看最大长度,网上有说使用: SET GLOBAL group_concat_max_len=102400; 设置,但是设置后没

summer089089的博客 1万+

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

MYSQL-合并字符串的三大函数(concat、concat_ws、group_concat)及解决因使用group_concat函数合并字符串后被截断(显示不全)的问题

文章目录MYSQL-合并字符串的三大函数(concat、concat_ws、group_concat)1. 创建测试数据2. concat3. concat_ws4. group_concat5. 解决因使用group_concat函数合并字符串后被截断(显示不全)的问题 MYSQL-合并字符串的三大函数(concat、concat_ws、group_concat) 1. 创建测试数据 create table `test` ( `name` varchar (30), `id` int (11) )

熊博主 2241

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。本次安装使用的是版本。默认登录信息:用户:root密码:password下载固件:https://github.com/haiibo/OpenWrt/releases/tag/X86_64【CPU配置】:4核心。

qq_27121281的博客 3915

硬件之光实战篇--Boost

当开关管处于关闭状态时,由于电感中的电流在短时间内不能瞬间消失,因此它会产生一个电感电动势,在电容器上加上一个高电压,从而使输出电压变高。--------------------------------------------------------分割线----------------------------------------------------------------在应用中,升压芯片需要根据负载电路的需求,选择合适的电感和电容等元器件,以达到所需要的升压倍数和输出电压。

m0_58664890的博客 2101

MySQL的GROUP_CONCAT函数报错

文章目录一、报错情况二、调整方式 调整MySQL的group_concat_max_len参数。 一、报错情况 使用GROUP_CONCAT函数报错,查找原因发现是拼接的字符串过长导致无法返回结果。 通过查找资料是由于group_concat_max_len参数设置导致的,并根据结果显示,默认的可拼接串最大长度不超过1024个字节,期望能够扩大允许的拼接字符串最大长度。 show variables like "group_concat_max_len"; 二、调整方式 总共有两种更改方式,一种是更

imVainiycos的博客 3226

hive sql每个用户的累积访问次数

我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20 3 u01 2017/1/23 6 u01 2017/2/21 8 U02 2017/1/23 6 U01 2017/2/22 4 要求使用SQL...

weixin_39150719的博客 3483

一文搞懂C++ 实现MySQL插入数据到表中时 insert into 失败的可能原因及问题解决

本文分析了C++ 实现MySQL插入数据到表中时 insert into 失败的可能原因以及问题解决的方法

Lucky_Alan_Gareth的博客 1549

使用python获取同花顺免费版和同花顺远航版自选股数据用于量化交易

在做量化交易时,有时需要在盘中实时监控同花顺自选股的数量,以便灵活地自定义提醒、捕捉买卖时点等。那么,如何使用python获取同花顺自选股数据呢?

tzzqn2008的专栏 3682

精度与速度双突破:YOLOv8-Pose 在 RK3588 上实现高性能人体姿态分析部署

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

know_F0727的博客 434

mysql GROUP_CONCAT函数详解

GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])` group_concat函数是mysql中非常实用的函数,它可以将同一个分组下的行拼接在一起。所以解决的办法也就是将group_concat有长度限制设置足够大即可。要多得多,出现group_concat把数据给截断了,什么原因呢?由于group_concat有长度限制,默认1024个字符,首先找到mysql的配置文件,设置如下配置。在项目用到如下sql。

liqinglonguo的博客 7万+

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 353

MySQL group_concat()详解

GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。 对应的语法格式 # 将分组中column1这一列对应的多行的值按照column2 升序或者降序进行连接,其中分隔符为seq # 如果用到了DISTINCT,将表示将不重复的column1按照column2升序或者降序连接 # 如果没有指定SEPARATOR的话,也就是说没有写,那么就会默认以 ','分隔 GROUP_CONCA.

奋斗的龙猫的博客 12万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Mysql中的concat和group_concat

一、CONTACT() CONCAT()函数用于将多个字符串连接成一个字符串。 格式 SELECT CONCAT(str1,str2,...) AS xx  from TABLEname 运行结果为将tablename这个表里的所有字段都集合成一个xx字段显示出来 例 :select concat(CONTAINER_SIZE_ID, CONTAINER_TYPE_ID, CONT

每天 一点 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL concat、concat_ws、group_concat 用法

MySQL concat、concat_ws、group_concat 用法...

wgchen 7997

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql group concat_mysql中函数CONCAT及GROUP_CONCAT的使用

一、CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串。使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+--------+| id | name |+----+--------+| 1 | BioCyc |+----+--------+1、语法及使用特点:CONCAT(str1,str2,…)返回...

weixin_42314680的博客 352

mysql group concat 去重_MySQL的GROUP_CONCAT函数

随着业务的不断增长,最近一段需要对大量的历史数据整理,而在整理过程中有一张表的数据需要把其中一张表中一个不唯一的字段的列作为唯一字段在新表中而其中相关联的字段全部存入同一条记录中,刚刚开始想了一会,到后来在得知GROUP_CONCAT函数就可以解决,作用是在使用聚合函数时使用该函数返回一个字符串结果,并带有非NULL值一组中的值, 如果没有非NULL值,则返回NULL,自己用了下确实是不错,在这里...

weixin_39523529的博客 2350

MySQL中concat以及group_concat的使用

MySQL中concat以及group_concat的使用 说明: 本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 3、举例: 例1:select concat (id, name, score) as info from tt2; 中间有一行为null是因为tt..

武小白的博客 1306

mysql的group-concat_MySQL中函数CONCAT及GROUP_CONCAT

一、CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串。使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+--------+| id | name|+----+--------+|1 | BioCyc |+----+--------+1、语法及使用特点:CONCAT(str1,str2,…)返回...

weixin_32488761的博客 236

mysql concat group_mysql函数GROUP_CONCAT()

mysql 中 GROUP_CONCAT()函数,主要用来处理一对多的查询结果,通常会结合GROUP BY一起使用。语法:1 GROUP_CONCAT([DISTINCT] expr [,expr ...]23 [ORDER BY {unsigned_integer | col_name | expr}45 [ASC | DESC] [,col_name ...]]67 ...

weixin_29351901的博客 455

MySQL的聚合函数 GROUP_CONCAT()

文章目录一.背景二. MySQL中聚合函数 GROUP_CONCAT()的使用2.1 多行变一列2.2 扩展:多行变多列三. Oracle中聚合函数 WM_CONCAT()的使用1. 函数概述2. 使用示例参考资料 一.背景 今天在数据开发项目时,遇到一个需求,需要把多行数据以某几个字段为键,将同列或多列的多行数据拼成一行数据。 二. MySQL中聚合函数 GROUP_CONCAT()的使用 概述:MySQL中,聚合函数GROUP_CONCAT()用指定分隔符连接字符串。 通常使用 多行变一列:

zijikanwa 8642

MySQL教程之concat以及group_concat

本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 3、举例: 例1:select concat (id, name, score) as info from tt2; 中间有一行为null是因为tt2表中有一行的score值为null。 例2:在例1的结果中三个字段id,n.

xiaodong liang 508

concat效率 mysql_MySQL统计函数GROUP_CONCAT使用陷阱分析

本文实例分析了MySQL统计函数GROUP_CONCAT使用中的陷阱。分享给大家供大家参考,具体如下:最近在用MySQL做一些数据的预处理,经常会用到group_concat函数,比如类似下面一条语句mysql>select aid,group_concat(bid) from tbl group by aid limit 1;sql语句比较简单,按照aid分组,并且把相应的bid用逗号串起...

weixin_39721853的博客 1211

mysql中如何用GROUP_CONCAT group by将字符串字段拼接起来

入表结构和 INSERT INTO hfnew.jxc_orderdetail (detail_id, order_no, pro_no, pro_name, pro_number, pro_price, pay_price ) VALUES ('detail_id', 'order_no', 'pro_no', 'pro_name', 'pro

qqahanson的专栏 1万+

mysql group_concat函数_mysql之group_concat函数

mysql之group_concat函数在介绍GROUP_CONCAT之前,我们先来看看concat()函数和concat_ws()函数。先准备一个测试数据库:mysql> select * from scores;+----+----------+-------+| id | name | score |+----+----------+-------+| 1 | zhangsa...

weixin_39617470的博客 379
上一篇: Mysql执行Query字符串
下一篇: .exe程序部署为Windows后台服务
Gen??
博客等级 码龄7年 24粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值