MySQL行转列与列转行

MySQL行转列与列转行,第1张

建表:

新增数据

源数据:

行转列后:

建表:

新增数据:

源数据:

列转行后:

把tags进行分割,并和id关联起来

结果如图:

t_num_tmp为中间表,内容如下:

id的最大值为 len(tags分割后tag的数量)

通过t_num_tmp中间表把t_tags的一条记录复制为n份,n为tags分割后tag的数量。

再在这n份记录中, 通过对应的循环值, 取到对应的tag

https://www.cnblogs.com/tooy/p/8108602.html

平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024个字符,如果我们需要更大,就需要手工去修改配置。

1、查看当前mysql group_concat_max_len

2、如果不方便重启mysql 可以在mysql状态通过命令设置,如

此种方式在mysql重启后会读取配置文件重新设置,会导致设置失效,所以建议依旧要修改配置文件。

3、修改配置文件:my.ini

在[mysqld]下新增配置:group_concat_max_len = 102400

重启,通过方式1查看即可。

4、不限制大小

有时我们并不知需要多大的字节才能满足需求,此种情况可以考虑不设置最大字节(即采用最大字节数)即在配置文件设置group_concat_max_len=-1

1、导出用的是Hutool导出工具类

mysql查询动态行转动态列,并使用mybatis执行

MySQL 动态 行转列(列值转换列名)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6226293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存