将具有唯一ID的一个表中的数据INSERT到具有多个ID

时间:2017-06-20 21:29:26

标签: mysql

我有一个很大的问题,我一直试图解决几个小时没有运气。

我需要在现有表中编辑或插入行并从另一个表中获取数据,但第二个表有多行具有相同的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中多个类别的现有数据。

所以我有两个解决方案:

  1. 丢失现有的多个类别信息删除表格2并使用类似于我在下面插入数据时使用的代码重新创建它,请检查我的代码,因为我是菜鸟。

  2. 更新表2并避免丢失多个类别的数据,但确保每个产品的主要categoryid至少有一个条目。

  3. 我需要的是将表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;
    

0 个答案:

没有答案