客户机需要迁移大量的数据,我觉得这个问题可能非常普遍。
遗产系统
学生档案包含姓名、电子邮件等字段,以及大学名称。大学名称被表示为一个字符串,因此被重复,这是浪费和缓慢的。
我们的新形式
一个更有效的解决方案是有一个名为 university
只存储一次带有外键的大学名称( university_id
)html下拉列表只是发布 university_id
到服务器。这使事情做得更快 GROUP BY
例如,查询。进入数据库的新表单数据工作正常。
问题
如何编写一个将插入所有其他列的查询( first_name
, last_name
, email
,而不是插入 university
弦,找出它的 university_id
从 university
并插入相应的int而不是原始字符串(场景:数据位于csv文件中,我们将对其进行操作(插入到语法中)
非常感谢。
1条答案
按热度按时间3qpi33ja1#
使用
INSERT INTO ... SELECT
用一个LEFT JOIN
. 选择left,这样当学生记录的university\u name值为空时,它就不会被丢弃。表名和列名将被替换为实际名称。以上假设你的新表为持有大学外键的学生
students_new
而旧的(正常化之前的)是students_old
.