我正在一个现有的数据库上建立一个我以前从未见过的关系结构。
我有三张表:
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中的每条记录都与legend1或legend2中的数据相关。字段items.legend确定它是哪一个。我想摆脱这种结构,因为legend1和legend2具有相同的结构。唯一不同的是内容。
我想要有这样的结构:
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。
发布于 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
https://stackoverflow.com/questions/10119188
复制相似问题