mysql将数据从一个表拆分为两个表,并保留映射(关联)
假设我有一个名为Students的表,表中列有姓名、手机、电子邮件、首选课程、首选学校、性别、年龄、地址、资格、名称、家庭电话、工作电话 我想从Students表中选择数据并插入到2个表中,例如, 查询=>列Id、姓名、手机、电子邮件 注册=>列Id、查询Id、姓名、手机、电子邮件、首选课程、首选学校、性别、年龄、地址、资格、指定、家庭电话、工作电话 如何使用查询表中正确的id值填充登记表中的查询id?用于获取上次插入查询的idmysql将数据从一个表拆分为两个表,并保留映射(关联),mysql,insert,associations,primary-key,Mysql,Insert,Associations,Primary Key,假设我有一个名为Students的表,表中列有姓名、手机、电子邮件、首选课程、首选学校、性别、年龄、地址、资格、名称、家庭电话、工作电话 我想从Students表中选择数据并插入到2个表中,例如, 查询=>列Id、姓名、手机、电子邮件 注册=>列Id、查询Id、姓名、手机、电子邮件、首选课程、首选学校、性别、年龄、地址、资格、指定、家庭电话、工作电话 如何使用查询表中正确的id值填充登记表中的查询id?用于获取上次插入查询的id INSERT INTO inquiries (name, mobi
INSERT INTO inquiries (name, mobile, ...
INSERT INTO enrollments (inquiry_id, name, ...)
VALUES (LAST_INSERT_ID(), 'myname', ...
大容量移动的另一种方法是添加一个临时列来保存旧id,以便在第二次插入时使用正确的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;
.@beck03076添加了一个带有示例的SQLfiddle。没有。。。听我在Students表中有10000行,我将运行INSERT进入查询选择null,null,fname,lname,null,concatemail,,email2,null,phone,null,mobile,null,null,now,null FROM Students;如何解决此问题?我希望查询ID从此查询表映射到注册表。我是否应该编写存储过程,为Students表和每个记录创建一个游标insert into inquiry,然后使用last_insert_id插入enrollment..???@beck03076最简单的可能是执行一个逐行执行的存储过程,另一种可能是在查询中临时添加一列'oldid'以进行映射,并执行类似插入查询的操作选择null、null、fname、lname、null、concatemail、email2、null、phone、null、mobile、null、null、now、null、来自学生的id,然后插入注册查询\u id、姓名。。。从查询a中选择a.id,其中a.oldid=students.id,'myname'。。。,然后删除临时列。