Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 仅将特定行从一个表复制到另一个表,并为每一行信息创建新行_Mysql_Sql - Fatal编程技术网

Mysql 仅将特定行从一个表复制到另一个表,并为每一行信息创建新行

Mysql 仅将特定行从一个表复制到另一个表,并为每一行信息创建新行,mysql,sql,Mysql,Sql,我只想将特定行从一个表复制到另一个表。到目前为止一切顺利: 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; D

我只想将特定行从一个表复制到另一个表。到目前为止一切顺利:

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 Split Functionmazing!非常感谢你!最后一个问题:a前面的第一个值总是缺少,例如黑色,不知道为什么,b我想一步一步地将代码应用到几列15列,因此FARBFAMILIE列包含3种或更少/更多颜色。如何将select 1保持为n union all select 2 union all select 3动态?请尝试对子字符串索引使用“,”而不是“,”。也许那是在扔东西。b如果你有一个数字表,这会很有帮助,但是有些技巧太长了,无法发表评论。谢谢你的帮助。我添加了3个空格,1在子字符串中,2在length语句中。b我刚刚添加了12个选项,其中一列中的最大信息是12,所以我有很多重复项,但之后要去掉它们。不过,我还有最后一个问题……:整个查询将打开两个窗口,一个窗口显示属性数,另一个窗口显示数据。如何将数据保存到另一个表中?我知道如何保存它,但mysql说列数不匹配,我认为这是因为属性的1个窗口数。我只想救第二个window@user3802349 . . . 新问题应作为问题而不是评论提出。