2016-12-07 84 views
0

我有三個MySQL表MySQL的 - 比較兩個表的值,並記錄他們

  • import表從一個cronjob獲得產品價值
  • products表存儲所有產品
  • log表應該存儲所有更改(添加,刪除,更改)

我想將我的import表與我的product表(他們都有相同的計劃),然後得到是否有產品添加,刪除或更改。另外我需要知道其中產品已更改/添加/刪除(例如,通過產品編號 - 不是PK),並將其記錄到我的log表中。

+0

導出CSV文件中表格的內容,使用(最好是GUI)diff工具來查找差異。 – axiac

回答

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);

對於必須刪除具有相同product_number但在其他領域不同的產品,在products選擇行不在import,爲此,必須改變產品,請選擇行中importproducts