So let's say I have a table prices:
prices
You can use VALUES() to use the value being inserted:
VALUES()
ON DUPLICATE KEY UPDATE products.cost = VALUES (cost)
I'm not sure why you are bothered by the JOIN. It does what you intend.
JOIN
1.4m articles
1.4m replys
5 comments
57.0k users