簡體   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