I have two tables:
-
products
-
products_tmp
The products_tmp table has less fields. But all the fields that are in products_tmp are in products.
On import of data I populate the products_tmp table and after that I need to do 3 things:
-
check the new products in
products_tmpthat are not in products (get ids) (DONE) -
check the old products in products that are not in
products_tmp(get ids for later deletion) (DONE) -
check for differences on the rest. Both tables have a product-hash unique identifier.
And I need to check differences in fields title, text, price, photos and category_id. And getting the tmp ids, so I can then update the products table with new values.
Is it possible to do the diff only in mysql?
This is straight forward…
A always prefer swapping tables to performing
RIGHT JOINS– personal preference…3.check for differences on the rest. Both tables have a product-hash unique identifier.
This one is a little more difficult. Assuming you don’t want to do a field-by-field comparison, you could do this…
The
UNIONshould naturally join the duplicates together into a single row, so anything with a count of 2 based on your primary key should be a duplicate row. If you put the results of this into a temporary table, you can do more queries to see what the differences are.