- 檢查新產品products_tmp不在產品(獲得IDS)(DONE)
這是直線前進...
SELECT pt.*
FROM products_tmp pt
LEFT JOIN products p ON p.product_id = pt.product_id
WHERE p.product_id IS NULL;
- 檢查老產品在產品中不在products_tmp(獲取ID以供後續刪除)(DONE)
一個總是喜歡換表來執行RIGHT JOINS
- 個人喜好...
SELECT p.*
FROM products p
LEFT JOIN products_tmp pt ON p.product_id = pt.product_id
WHERE pt.product_id IS NULL;
3.檢查對其餘的差異。這兩個表都有一個產品哈希唯一標識符。
這一個有點困難。假如你不想做一個場逐場比較,你可以這樣做......
SELECT product_id, count(*) cnt
FROM (
SELECT p.product_id, p.field2, p.field3
FROM products p
UNION
SELECT pt.product_id, pt.field2, pt.field3
FROM products_tmp pt
) pd
GROUP BY product_id
HAVING cnt > 1;
的UNION
自然應該加入重複連成一排,所以用計數2什麼基於你的主鍵應該是一個重複的行。如果你把這個結果放到一個臨時表中,你可以做更多的查詢來看看有什麼不同。
請原諒我的無知,我不完全明白你的意思。你已經比較了差異(步驟1和2),阻止你做第三步? – ajreal
例如,如果'products_tmp'包含「產品」中已存在的某個產品的價格變化,他希望能夠識別這些變化。 –