合并两个表的关系

时间:2012-04-12 07:22:11

标签: mysql sql database

我正在建立一个现有的数据库,其中包含我以前见过的关系结构。

我有三张桌子:

legend1
legid       INT(11), AUTO_INCREMENT, PRIMARY
description VARCHAR(255)

legend2
legid       INT(11), AUTO_INCREMENT, PRIMARY
description VARCHAR(255)

items
id          INT(11), AUTO_INCREMENT, PRIMARY
name        VARCHAR(255)
legid       INT(11)
legend      VARCHAR(8)

items中的每条记录都与legend1legend2中的数据相关。 字段items.legend确定它是一个字段。我希望摆脱这种结构,因为legend1legend2具有相同的结构。唯一不同的是内容。

我想要这个结构:

legend
legid       INT(11), AUTO_INCREMENT, PRIMARY
description VARCHAR(255)

items
id          INT(11), AUTO_INCREMENT, PRIMARY
name        VARCHAR(255)
legid       INT(11)

问题是表已满,没有数据丢失。两个表的id从1开始,因此几乎每个主键都会发生冲突。

我有这个问题:

INSERT INTO legend1 (description) SELECT description FROM legend2;

此查询不起作用,因为它会混淆legend2中引用的ID。

1 个答案:

答案 0 :(得分:1)

执行插入查询后:

INSERT INTO legend1 (description) SELECT description FROM legend2;

执行以下查询

UPDATE items SET legid = (SELECT legid FROM legend1 WHERE legend1.description = items.description) WHERE legend ='something to define that it is from the legend2 table'

请注意,我没有尝试过查询,但解决方案有点像这样。如果你选择了我所做的语法错误,我相信它会起作用。

它的作用如下: 将整个legend2表插入legend1表后,更新项表以设置相应的legendid