首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并具有关系的两个表

合并具有关系的两个表
EN

Stack Overflow用户
提问于 2012-04-12 15:22:11
回答 1查看 89关注 0票数 0

我正在一个现有的数据库上建立一个我以前从未见过的关系结构。

我有三张表:

代码语言:javascript
复制
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具有相同的结构。唯一不同的是内容。

我想要有这样的结构:

代码语言:javascript
复制
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开始,所以几乎每个主键都会冲突。

我有这样的疑问:

代码语言:javascript
复制
INSERT INTO legend1 (description) SELECT description FROM legend2;

这个查询不起作用,因为它弄乱了来自legend2的引用id。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 15:30:24

执行完插入查询后:

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表中后,更新items表以设置相应的legendid

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10119188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档