Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 合并具有关系的两个表_Mysql_Sql_Database - Fatal编程技术网

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表以设置相应的legendid

legend1和legend2中是否有重复的描述?目前没有重复的描述,但将来可能会有。嗯,其中legend1.description=items.legid在大多数情况下应该不返回任何内容,因为description是一个VARCHAR,而legid是一个INT!它应该是legend1.legid,然后它就可以工作了。非常感谢。你说得有点对!我认为这确实是错误的,但我认为应该是legend1.description=items.description