繁体   English   中英

如何将一个表中的一条记录分成一个单独的表的两个记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM