mysql将旧表以,拼接的字段拆分为一张新表

有时候我们某张表的一些字段值可能是以,号拼接的字符串,这种做法有很大的局限性,比如我们给某个教室分配的所有教师以,号拼接保存在这个字段当中,一开始为这个字段分配了varchar1000的大小,当分配的教师很多的时候就会报too long的错误,所以我们很多时候是使用一行保存一个教师,这样自动增加表的行数就行了。
那如果以前的表是,拼接的字符串,怎么用脚本的形式把它拆分为新表呢:
旧表数据:
mysql将旧表以,拼接的字段拆分为一张新表
现在想把这个字段内容拆分到新建的表中并给新建表中的字段赋值
建新表:
CREATE TABLE IF NOT Exists xxfb_class_manager (
id varchar(32) NOT NULL,
class_id varchar(32) DEFAULT NULL COMMENT ‘教室id’,
manager_id varchar(32) DEFAULT NULL COMMENT ‘管理员Id’,
manager_type varchar(2) DEFAULT NULL COMMENT ‘管理员类型.0代表教师,1代表学生’,
update_time varchar(32) DEFAULT NULL COMMENT ‘更新时间’,
scrq timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY asset_id (asset_id),
KEY manager_id (manager_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
因为管理员类型分学生和教师,所以需要两条SQL:
拆分教师管理员字段(为避免读者直接复制粘贴代码,不自己理解,这里使用图片形式)。拆分学生管理员字段与此类似,只需把对应字段的名称和manager_type改了即可,这里不再赘述。
mysql将旧表以,拼接的字段拆分为一张新表
拆分到新表后清空原表数据:
mysql将旧表以,拼接的字段拆分为一张新表