mysql中的一个表的某字段,假设为cds_var 表
CREATE TABLE `cds_var` (
`cds_value` varchar(100) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
表 trans_var为cds_value的映射表
CREATE TABLE `trans_var` (
`var_key` varchar(100) NOT NULL,
`val_value` varchar(100) NOT NULL
)
想要实现下图的效果
又该如何操作,参考https://www.cnblogs.com/Charles-Yuan/p/11086950.html
创建 中间表 var_index
CREATE TABLE `var_index` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
插入一点点的数据
再来段sql
SELECT b.id,GROUP_CONCAT(a.val_value) FROM trans_var a, (
SELECT
c.id,SUBSTRING_INDEX( SUBSTRING_INDEX( C.cds_value, ',', G.ID ), ',',- 1 ) IDS
FROM
cds_var C
JOIN var_index G ON G.ID <= ( LENGTH( C.cds_value ) - LENGTH( REPLACE ( C.cds_value, ',', '' ) ) + 1 ) ) b
WHERE a.var_key=b.IDS
GROUP BY b.id
出现结果:完美解决。