我有一个很大的问题,我一直试图解决几个小时没有运气。
我需要在现有表中编辑或插入行并从另一个表中获取数据,但第二个表有多行具有相同的productid。
这些表的结构是不同的,其中一个是唯一的ID(我认为这是正确的定义,但我不确定),这意味着每一行都有自己独特的ID(对不起,我是不能用适当的语言来解释这个,所以我希望你理解)并且你找不到具有相同id的2行。表2有另一个结构,它没有唯一的id,它只有2个字段,productid和categoryid,我有多行具有相同的productid
我需要获取数据的表具有以下结构: ID CID
我需要插入或更新数据的表具有以下结构: 的productid 类别ID
问题是表2有多个产品,这意味着我可以拥有相同产品的多于1行(例如productid 20 categoryid 3,再次产生productid 20和categoryid 4的另一行),并且在我现有的表中2已经有很多productid条目有超过1行具有相同产品ID,因为这用于为单个产品选择多个类别,我不想丢失现有信息但我也想了解如何重新创建这个表2从头开始插入新行。
我需要表2至少有一行表1作为productid,table1 cid作为categoryid,如果可能的话,不删除表2中多个类别的现有数据。
所以我有两个解决方案:
丢失现有的多个类别信息删除表格2并使用类似于我在下面插入数据时使用的代码重新创建它,请检查我的代码,因为我是菜鸟。
更新表2并避免丢失多个类别的数据,但确保每个产品的主要categoryid至少有一个条目。
我需要的是将表2的categoryid字段设置为等于表1的cid字段,其中表2的productid等于表1的id
所以基本上是这样的:
INSERT INTO dz3_properties_product_category (productid, categoryid) SELECT
id, cid FROM dz3_properties_products;
这些最后的查询给了我重复的主键错误,我不明白该怎么做..
也许像
update properties_products p join
properties_category l
on p.id = l.productid
set l.categoryid = p.cid;