[英]how to get one record in a table into two records of a separate table
根据旧数据库,我有一个名为Guardiant的表,它有一个名为db_id的外键(来自Student表)。 表结构是这样的:
CREATE TABLE IF NOT EXISTS `guardiant` (
`db_id` varchar(100) NOT NULL,
`fg_name` varchar(100) DEFAULT NULL,
`fg_address` varchar(100) DEFAULT NULL,
`fg_tel_work` varchar(100) DEFAULT NULL,
`fg_mobile` varchar(100) DEFAULT NULL,
`fg_email` varchar(100) DEFAULT NULL,
`fg_prof` varchar(100) DEFAULT NULL,
`mg_name` varchar(100) DEFAULT NULL,
`mg_address` varchar(100) DEFAULT NULL,
`mg_tel_work` varchar(100) DEFAULT NULL,
`mg_mobile` varchar(100) DEFAULT NULL,
`mg_email` varchar(100) DEFAULT NULL,
`mg_prof` varchar(100) DEFAULT NULL,
`by` varchar(100) DEFAULT NULL,
PRIMARY KEY (`db_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
该表同时包含父母的记录(父亲是fg_,母亲是mg_)。 我需要将数据迁移到另一个只能包含母亲或父亲的表中。 结构类似于此:
CREATE TABLE IF NOT EXISTS `fsms_parent_guardian` (
`parent_guardian_id` varchar(20) NOT NULL,
`address_1` varchar(200) default NULL,
`address_2` varchar(200) default NULL,
`date_of_birth` date default NULL,
`description` varchar(250) default NULL,
`education` varchar(100) default NULL,
`email` varchar(100) default NULL,
`first_name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
`middle_name` varchar(100) default NULL,
`modified_by` varchar(20) NOT NULL,
`modified_date` date NOT NULL,
`nationality` varchar(20) default NULL,
`profession` varchar(50) default NULL,
PRIMARY KEY (`parent_guardian_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
因此,旧表中的一条记录应该进入新表的两条记录中,并具有单独的ID。 fsms_parent_guardian表和学生表的主键也应映射到单独的表中。 请告诉我解决此问题的可行方法。
要复制记录,您将需要两个查询,第一个选择fg记录并将其插入到新表中,第二个选择mg记录并再次插入它们。 fg和mg的每个记录都需要使用外键(ID_student)映射到学生表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.