将行从一个表复制到另一个MySQL Workbench

cetgtptt  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(177)

我有两个结构完全相同的表。

产品测试1、产品测试2

具有单个product_test2表的行添加了一个id_product,该id_product即使在product_test1表中也不重复,因为它是一个在使用product_test2表更新之前不接收数据的表,并且在product_test2表中也不重复,因为它是唯一ID。
我使用的是WorkBench。我想将product_test2表中的所有新行合并到product_test1表中。我只想添加这些行,但不更新以前已插入product_test1中的记录。简而言之,只需将product_test2表中的新行添加到product_test1表中。
我正在使用一个算法,给我一个错误,我想知道错误是什么,如果它可以在一个更简单的方式,而不必把所有列的名称,但最重要的是,知道为什么它给我一个错误。

错误为:错误代码:1054.“where子句”中的列“product_test1.product_id”未知

代码为:

INSERT INTO `product_test1`

(product_id,
product_name,
product_image, 
brand_id, 
categories_id......)

SELECT product_id, 
product_name, 
product_image, 
brand_id, 
categories_id.... 

FROM `product_test2` WHERE `product_test1.product_id` <> `product_test2.product_id

使用〈〉命令,我希望遍历该表,并仅查找product_test1表和product_test2表之间不同或不匹配的id_products

iq3niunx

iq3niunx1#

您可以尝试在table2插入完成后将触发器插入到table1。

Create Trigger insert_to_product_test1
 ON product_test2 
 AFTER INSERT
AS
  DECLARE 
       @product_id int,
       @product_name varchar,
       @product_image varchar,
       @brand_id int,
       @categories_id int

       SELECT @product_id = ins.product_id  FROM inserted ins;
       SELECT @product_name = ins.product_name  FROM inserted ins;
       SELECT @product_image = ins.product_image  FROM inserted ins;
       SELECT @brand_id = ins.brand_id  FROM inserted ins;
       SELECT @categories_id = ins.categories_id   FROM inserted ins;

If ( SELECT COUNT(product_id) FROM product_test1  WHERE product_id =  @product_id) =0
         BEGIN
           INSERT INTO product_test1(product_id,product_name,product_image, 
           brand_id,categories_id......) 
           VALUES(@product_id,@product_name,@product_image 
          ,@brand_id ,@categories_id ...)
END

相关问题