MySQL - 比较两个表的值并记录它们

时间:2016-12-07 10:09:39

标签: mysql

我有三个MySQL表

  • 我的import表从cronjob获取产品值
  • 我的products表存储了所有产品
  • 我的log表应存储所有更改(添加,删除,更改)

我想将我的import表与我的product表进行比较(它们都具有相同的方案)然后获取是否添加,删除或更改了产品。另外,我需要知道哪个产品已被更改/添加/删除(例如产品编号 - 而不是PK)并将其记录到我的log表中。

1 个答案:

答案 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中的行,对于必须更改的产品,请选择importproducts中的行具有相同的product_number但在其他字段中有所不同。