我有一个带有字段 json
的表模板
。由于 json
对于许多 template
来说可能是相同的 (1:n),我创建了另一个表 template_json
并添加了字段 template_json_id
(FK) 到模板
。
为了将所有数据从一个表迁移到另一个表,我使用了以下 SQL:
INSERT INTO db.template_json (`json`)
SELECT `json`
FROM db.template;
这可以完美地迁移数据,但当然会让我的 template.template_json_id
为空。我需要使用插入中的 template_json.id
更新每行的 template.template_json_id
(FK)。
是否可以在一个查询中完成此操作?
最佳答案
如果您没有重复项,您可以使用内部联接并进行更新
update template
inner join template on template_json.json = template.json
set template.template_json_id = template_json.id;
如果您有重复项,则应使用选择的不同内容进行填充
INSERT INTO db.template_json (`json`)
SELECT distinct `json`
FROM db.template;
关于mysql - 规范化 - 将数据迁移到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511426/