我创建的数据库15年前设计得不好。我有一个varchar列,其中包含逗号分隔的字符串:'5,8,13'。字符串中不包含空格和尾随逗号,但值的数量是可变的。我想做的是创建一个新表,并将这些值与该行的ID配对移动到新表中。假设上述值来自ID为7的行,结果将是3行:
[ {7, 5} {7, 8} {7, 13} ]
查看现有数据集,该列的值从1到6个不等。我找到了一个线程,展示了如何使用拆分字符串函数:Split value from one field to two
但坦率地说,我不知道如何将其转化为单个插入操作。如果这不是一个简单的任务,那么我将只写一个PHP脚本,即使它会有很多插入语句。
进一步解释,这里有两个表:
create table Table_A( id int auto_increment primary key, platforms varchar(255) ) create table Table_B( id int auto_increment primary key, platform int not null )
Table_A是现有数据,其中platforms列中的数据是以逗号分隔的数字"3,45,"或"56,4"。这些数字指向另一个表中的索引。是的,我知道这是一个糟糕的设计,幸运的是,我从那时起已经学到了更好的方法。我想从Table_A的platform字符串中解析数字,并将它们与Table_A行的ID一起插入到Table_B中。
这里有一个小查询来实现这个功能。它只从CSV中分割6个值。 如果一行中有更多的值,您必须更改UNION ALL
结果存储在singletable中。