如何将表中的一条记录放入一个单独表的两条记录中

时间:2014-09-16 15:23:40

标签: mysql sql database

根据旧数据库,我有一个名为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表和学生表的主键也应该映射到一个单独的表中。请告诉我一个可行的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

要复制记录,您需要两个查询,第一个选择fg记录并将它们插入新表中,第二个选择mg记录并再次插入。每个fg和mg记录需要使用外键(ID_student)映射到学生表。