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中添加了这些列。谢谢你的帮助!