mysql将数据从一个表拆分为两个表,并保留映射(关联)

时间:2013-07-28 19:59:38

标签: mysql insert associations primary-key

让我们说我有一张名为学生的表,名称,手机,电子邮件,首选课程,首选学校,性别,年龄,地址,资格,名称,家庭电话,工作电话

我想从Students表中选择数据并插入2个表,例如: 查询=> (带列)Id,Name,Mobile,Email 注册=> (有栏目)Id,inquiry_id,姓名,手机,电子邮件,首选课程,首选学校,性别,年龄,地址,资格,名称,家庭电话,工作电话

如何使用查询表中的正确ID值填充注册表中的inquiry_id?

1 个答案:

答案 0 :(得分:1)

使用LAST_INSERT_ID()获取上次插入的查询的ID;

INSERT INTO inquiries (name, mobile, ...

INSERT INTO enrollments (inquiry_id, name, ...) 
   VALUES (LAST_INSERT_ID(), 'myname', ...

A simple SQLfiddle for testing

批量移动的另一种方法是添加一个临时列来保存旧ID,以便您可以使用正确的列进行第二次插入;

ALTER TABLE inquiries ADD COLUMN oldid INT;

INSERT INTO inquiries (..., oldid) SELECT ..., id FROM students;
INSERT INTO enrollments (inquiry_id, ...)
  SELECT (SELECT id FROM inquiries WHERE students.id=oldid), ...
  FROM students;

ALTER TABLE inquiries DROP COLUMN oldid;

Another SQLfiddle