提问者:小点点

使现有数据标准化;varchar列表到整数


对我十年前制作的现有表进行规范化。我有一个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中的每一行进行单独的插入。有没有一种更优雅的方式,不用借助外部脚本?


共1个答案

匿名用户

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);