当前位置:   article > 正文

mysql 单字段分列的实践,实现group_concat的逆向操作_mysql group contact 逆向

mysql group contact 逆向

mysql中的一个表的某字段,假设为cds_var 表

 

  1. CREATE TABLE `cds_var` (
  2.    `cds_value` varchar(100NOT NULL,
  3.    `id` int(11NOT NULL AUTO_INCREMENT,
  4.    PRIMARY KEY (`id`)
  5.  )

表 trans_var为cds_value的映射表

  1. CREATE TABLE `trans_var` (
  2. `var_key` varchar(100) NOT NULL,
  3. `val_value` varchar(100) NOT NULL
  4. )

想要实现下图的效果

又该如何操作,参考https://www.cnblogs.com/Charles-Yuan/p/11086950.html
 

创建 中间表 var_index

  1. CREATE TABLE `var_index` (
  2. `id` int(11) NOT NULL,
  3. PRIMARY KEY (`id`)
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

插入一点点的数据

再来段sql
 

  1. SELECT b.id,GROUP_CONCAT(a.val_value) FROM trans_var a, (
  2. SELECT
  3. c.id,SUBSTRING_INDEX( SUBSTRING_INDEX( C.cds_value, ',', G.ID ), ',',- 1 ) IDS
  4. FROM
  5. cds_var C
  6. JOIN var_index G ON G.ID <= ( LENGTH( C.cds_value ) - LENGTH( REPLACE ( C.cds_value, ',', '' ) ) + 1 ) ) b
  7. WHERE a.var_key=b.IDS
  8. GROUP BY b.id

出现结果:完美解决。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/75015
推荐阅读
相关标签
  

闽ICP备14008679号