【问题标题】:MySQL - Compare values of two tables and log themMySQL - 比较两个表的值并记录它们
【发布时间】:2017-04-22 05:28:54
【问题描述】:

我有三个 MySQL 表

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

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

【问题讨论】:

  • 导出 CSV 文件中表格的内容,使用(最好是 GUI)diff 工具来查找差异。

标签: mysql


【解决方案1】:

您可以选择在一个表中而不在另一个表中的产品行,如下所示:

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 但其他领域不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2020-07-25
    • 2012-06-04
    • 2016-06-20
    • 2020-03-16
    相关资源
    最近更新 更多