Mysql 合并具有关系的两个表
我在现有数据库的基础上构建了一个我以前从未见过的关系结构 我有三张桌子:Mysql 合并具有关系的两个表,mysql,sql,database,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
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)
条目中的每个记录都与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。执行插入查询后: 插入legend1描述,从legend2选择描述 执行以下查询 UPDATE items SET legid=从legend1中选择legid,其中legend1.description=items.description WHERE legend='something to definition它来自legend2表' 注意,我还没有尝试过这个查询,但是解决方案有点像这样。如果你能找出我犯的语法错误,我相信它会起作用的 它的作用如下:
将整个legend2表插入legend1表后,更新items表以设置相应的legendidlegend1和legend2中是否有重复的描述?目前没有重复的描述,但将来可能会有。嗯,其中legend1.description=items.legid在大多数情况下应该不返回任何内容,因为description是一个VARCHAR,而legid是一个INT!它应该是legend1.legid,然后它就可以工作了。非常感谢。你说得有点对!我认为这确实是错误的,但我认为应该是legend1.description=items.description