gpt4 book ai didi

mysql - 将表从一对多转换为多对多 MYSQL

转载 作者:行者123 更新时间:2023-11-29 11:35:28 25 4
gpt4 key购买 nike

我有一个表,该表曾经使用parent_id列具有一对一的关系,我们的逻辑发生了变化,我们需要启用多对多,因此我们 - 不幸的是 - 没有时间更改数据库模型,因此我们过去常常为每个关系插入多行,然后在代码中将它们分组。

现在我需要重构 mysql 表以反射(reflect)多对多关系。

示例

Table Blog
ID, Body, target_id, grouping
1 etc 1 1
2 etc 2 1
3 etc2 1 3
4 etc2 2 3

目前,当我们创建新的博客文章时。我们插入第一行。获取其 id,并为每个目标复制插入。

现在随着数据库变得越来越大。我们需要阻止这种情况并创建一个保存关系的中间表。所以上表将变成

Table Blog
ID, Body
1 etc
3 etc2

Table Blog_target
blog_id,target_id
1 , 1
1 , 2
3 , 1
3 , 2

那么如何将旧表中的数据拆分到新表中而不丢失mysql中的任何数据?

最佳答案

也许是这样的? new_blog 表,因为您的 blog 表已经存在,当您完成所有工作并对 new_blog 表和 blog_target 表中的数据感到满意后,您可以删除您的 blog 表并 RENAME TABLE new_blog TO blog;

INSERT INTO new_blog(ID, Body)
SELECT DISTINCT grouping, body FROM blog;

INSERT INTO blog_target(blog_id,target_id)
SELECT grouping,target_id
FROM blog;

sqlfiddle

关于mysql - 将表从一对多转换为多对多 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com