对我十年前制作的现有表进行规范化。我有一个varchar列(平台),其中有一个数字列表,我希望将其分解并放入一个单独的表中。
[table_A]
id int
platforms varchar
other fields....
platform的示例如下所示:
“1、3、4、7”
那些数字链接到另一个名为Platforms的表,它只不过是一个匹配的ID和一个varchar字段(一个描述)。我创建了一个新的表来建立table_A和平台之间的关联。
[Table_B]
id int
table_A_id int
platform_id
因此,对于上面的平台示例,我将有4行插入到table_b中。我的问题是,我能严格地通过SQL做到这一点吗?我唯一能想到的就是编写一个php脚本来解析varchar,并对table_a中的每一行进行单独的插入。有没有一种更优雅的方式,不用借助外部脚本?
INSERT INTO Table_B (table_A_id, platform_id)
SELECT a.id, p.id
FROM table_A AS a JOIN Platforms AS p ON FIND_IN_SET(p.ID, a.platforms);