我只想将特定行从一个表复制到另一个表。到目前为止一切顺利:
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM HDG.HDG_FINAL_TABLE WHERE HDG.HDG_FINAL_TABLE.FARBFAMILIE LIKE "%,%";
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO HDG.HDG_FINAL_TABLE_2 SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;
我的问题是“FARBFAMILIE”列有三个不同的值,例如“黑色、蓝色、黄色”。我想复制“FARBFAMILIE”列包含“,”的每一行,并复制该行,因为该列包含由“,”分隔的不同信息。
原始行:
第 0 列 - 第 1 列 - 第 2 列
组 - SKU - 颜色
1 - 001 - 黑色、蓝色、黄色
目标:
第 0 列 - 第 1 列 - 第 2 列
组 - SKU -颜色
1 - 001 - 黑色
1 - 001 - 蓝色
1 - 001 - 黄色
感谢您的帮助!
最佳答案
听起来你想做一件崇高的事情,通过摆脱逗号分隔的列。这并不容易,但你可以做到。首先,您需要知道列中值的最大数量:
select 1 + max(length(FARBFAMILIE) - length(replace(FARBFAMILIE), ',', ''))
from HDG.HDG_FINAL_TABLE;
注意这里计算元素的技巧。获取值的长度并减去不带逗号的长度。
然后,您可以获得所需的行:
select `group`, sku,
substring_index(substring_index(color, ',', n.n), ',', -1) as color
from HDG.HDG_FINAL_TABLE join
(select 1 as n union all select 2 union all select 3 . . .
) n
on length(FARBFAMILIE) - length(replace(FARBFAMILIE), ',', '') <= n.n;
这将生成每行具有单独颜色的输出行。
关于mysql - 仅将特定行从一个表复制到另一个表,并为每行信息创建一个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558452/