我有三个MySQL表
import
表从cronjob获取产品值products
表存储了所有产品log
表应存储所有更改(添加,删除,更改)我想将我的import
表与我的product
表进行比较(它们都具有相同的方案)然后获取是否添加,删除或更改了产品。另外,我需要知道哪个产品已被更改/添加/删除(例如产品编号 - 而不是PK)并将其记录到我的log
表中。
答案 0 :(得分:0)
您可以选择一个表中的产品行而不是另一个表中的产品行,如下所示:
SELECT * FROM import WHERE product_number NOT IN (SELECT product_number FROM products);
假设这些是必须添加的产品,请先写入log
:
INSERT INTO log ( product_number, description ) SELECT product_number, 'Added' FROM import WHERE product_number NOT IN (SELECT product_number FROM products);
然后更新products
:
INSERT INTO products SELECT * FROM import WHERE product_number NOT IN (SELECT product_number FROM products);
对于必须删除的产品,请选择products
中不在import
中的行,对于必须更改的产品,请选择import
和products
中的行具有相同的product_number
但在其他字段中有所不同。