Mysql 为另一个表中的每一行将一个表中的行写入另一个表

Mysql 为另一个表中的每一行将一个表中的行写入另一个表,mysql,Mysql,我有三张表:table1、table2、table3 对于表3中的每一行,我想从表2和表3中获取值,并将它们插入表1。我需要一个环吗?没有钥匙什么的,只有三张桌子 table2和table3中的列都出现在table1中(有些列具有不同的名称),但是table1中还有一些列应该保持为空 以下是表格的详细外观: table1: 制造商2 |商店| sku |名称|头衔|法尔贝|制造商|元描述|动态1 |头衔|模特|前缀|头衔|模特|前缀|头衔|性别 table2: 制造商2 | sku |名称|

我有三张表:
table1、table2、table3

对于
表3
中的每一行,我想从
表2
表3
中获取值,并将它们插入
表1
。我需要一个环吗?没有钥匙什么的,只有三张桌子

table2
table3
中的列都出现在
table1
中(有些列具有不同的名称),但是
table1
中还有一些列应该保持为空

以下是表格的详细外观:

table1:
制造商2 |商店| sku |名称|头衔|法尔贝|制造商|元描述|动态1 |头衔|模特|前缀|头衔|模特|前缀|头衔|性别

table2:
制造商2 | sku |名称|头衔| farbe |制造商

table3:
存储|元

因此,除了
table3.meta
应该成为
table1.meta\u description\u dynamic1
之外,这些列的调用几乎相同

谢谢

您可以通过查询来实现这一点,其中
选择
查询是
表2
表3
之间的
连接
。由于
表1
中有额外的列,因此必须为每个表枚举列,例如

INSERT INTO table1 (manufacturer2, sku, name, title_farbe, manufacturer, store, meta_description_dynamic1)    
SELECT manufacturer2, sku, name, title_farbe, manufacturer, store, meta
FROM (SELECT manufacturer2, sku, name, title_farbe, manufacturer,
             @rownum := rownum + 1 AS rownum
      FROM table2
      CROSS JOIN (SELECT @rownum := 0) r
      ) t2
JOIN (SELECT store, meta,
             @rownum2 := rownum2 + 1 AS rownum
      FROM table3
      CROSS JOIN (SELECT @rownum2 := 0) r
      ) t3 ON t3.rownum = t2.rownum

请注意,
SELECT
中没有
orderby
子句不能保证排序,因此结果可能不完全匹配。但是,对于您的表格,您没有太多选择,因为没有公共列,也没有自然排序。

所有三个表格中的列都相同吗?我用答案编辑了我的帖子,谢谢!表2中的数据与表3中的数据有何关联?没有公共列,那么您如何知道哪一行对应于另一行?您使用的是什么版本的MySQL?很高兴听到这个消息。谢谢,但是tabel1的列(应该保持为空)比表2和表3的列多。查询的结果是一个错误,只是这样说。那么,“枚举”是什么意思呢?@Arnie在
插入到表1(col1,…,coln)
中,您只在
表1
中输入要插入的列名。根据您的问题,查询中每个
col1,col2,…,coln
的名称应该是相同的,因为
table1
table2
table3
有相同的列集(除了
table1
有一些额外的列之外),它仍然告诉我select返回不同数量的值。第一个select有5列,第二个只有2列。两个选择一起返回7个值,我也在表1中插入了7个值。@Arnie我想我误解了,
table2
table3
有相同的列。不是这样吗?如果没有,你能列出每个表中的列吗?我在我的OP中添加了这些列。谢谢你的帮助!