规范化现有数据; varchar 列表到整数
normalizing existing data; varchar list to integers
标准化我十年前制作的现有 table。我有一个 varchar 列(平台),其中包含我想分解并放入单独的 table.
中的数字列表
[table_A]
id int
platforms varchar
other fields....
平台示例如下所示:
"1,3,4,7"
那些数字 link 到另一个 table 称为平台,它只不过是一个匹配的 ID 和一个 varchar 字段(描述)。我创建了一个新的 table 来建立 table_A 和平台之间的关联。
[Table_B]
id int
table_A_id int
platform_id
所以对于上面的平台示例,我会在 Table_B 中插入 4 行。我的问题是,我可以通过 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);
标准化我十年前制作的现有 table。我有一个 varchar 列(平台),其中包含我想分解并放入单独的 table.
中的数字列表[table_A]
id int
platforms varchar
other fields....
平台示例如下所示:
"1,3,4,7"
那些数字 link 到另一个 table 称为平台,它只不过是一个匹配的 ID 和一个 varchar 字段(描述)。我创建了一个新的 table 来建立 table_A 和平台之间的关联。
[Table_B]
id int
table_A_id int
platform_id
所以对于上面的平台示例,我会在 Table_B 中插入 4 行。我的问题是,我可以通过 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);