Many fixes depend on another table: set costs from the supplier catalog, remove lines of cancelled orders.
UPDATE products
SET cost = ps.unit_cost
FROM product_suppliers AS ps
WHERE ps.product_id = products.product_id
AND ps.supplier_id = 1;
UPDATE ... FROM works in PostgreSQL, SQL Server and here. MySQL writes UPDATE products JOIN product_suppliers ON ... SET .... For deletes, a subquery works everywhere: DELETE FROM order_items WHERE order_id IN (SELECT ...), or WHERE EXISTS (...).
The trap: if one target row matches several rows in the other table (a product with two suppliers), the update has several candidate values and the result depends on which one the database happens to use. Reduce the other table to one row per key first, for example with GROUP BY and MIN, then join to that.