Mysql 我正试图为下面的场景编写一个查询,将一个表拆分为2,如下所示

Mysql 我正试图为下面的场景编写一个查询,将一个表拆分为2,如下所示,mysql,sql,join,mysql-workbench,Mysql,Sql,Join,Mysql Workbench,DB:MYSQL工作台 请找出我下面的问题,你能帮我一下吗 列为且行为的现有表(1001,1,1,0,1;1002,1,0,0,1) 新表应如下所示(手动创建):表1(带id和说明) 其中abc、bcd、cde、def==是cola、colb、colc、cold描述 id||description == Rows as (1, abc; 2, bcd; 3, cde; 4, def) 表2==有两列 eid ||Group id 从现有表迁移后,表2将如下所示 Rows as (1001,1

DB:MYSQL工作台

请找出我下面的问题,你能帮我一下吗

列为且行为
的现有表(1001,1,1,0,1;1002,1,0,0,1)

新表应如下所示(手动创建):表1(带id和说明)

其中abc、bcd、cde、def==是cola、colb、colc、cold描述

id||description == Rows as (1, abc; 2, bcd; 3, cde; 4, def)
表2==有两列

eid ||Group id
从现有表迁移后,表2将如下所示

Rows as (1001,1; 1001,2;1001,4;1002,1;1002,4)
请建议我如何编写查询。

尝试以下操作:

    insert into table2
    select col.id,table1.id FROM col
INNER JOIN table1 on case when col.cola=1 then 1 end =table1.id
UNION ALL 
select col.id,table1.id FROM col
INNER JOIN table1 on case when col.colb=1 then 2 end =table1.id
UNION ALL
select col.id,table1.id  FROM col
INNER JOIN table1 on case when col.colc=1 then 3 end =table1.id
UNION ALL 
select col.id,table1.id  FROM col
INNER JOIN table1 on case when col.cold=1 then 4 end =table1.id

查询以将现有表迁移到表2hi danilo,感谢您的回复..我忘了提到..表1中的cola,colb,colc,cold将是现有表中列的描述它的意思是这样的,cola是现有表中的列名,但在表1中它将类似于“abc”,即,如果cola等于1,那么它的描述将是“abc”,所以当col.cola=1时,从col-INNER-JOIN table1中选择col.id,table1.id在case中是正确的,当col.cola=1时,那么1 end=table1.id在case中是正确的。嗨,Danilo。看起来我很困惑,现有表有columna、columnb、columnc、columnd和eid(值根据问题而定)。。由于我们正在规范化该表,所以将该表划分为两个表(表1、表2)。所以从现有的表中,我需要使用表1中的ID将数据导入表2中
    insert into table2
    select col.id,table1.id FROM col
INNER JOIN table1 on case when col.cola=1 then 1 end =table1.id
UNION ALL 
select col.id,table1.id FROM col
INNER JOIN table1 on case when col.colb=1 then 2 end =table1.id
UNION ALL
select col.id,table1.id  FROM col
INNER JOIN table1 on case when col.colc=1 then 3 end =table1.id
UNION ALL 
select col.id,table1.id  FROM col
INNER JOIN table1 on case when col.cold=1 then 4 end =table1.id