Even if it did work, it wouldn't do what you want.
It looks like you are storing each stock transaction in one table (inventory_out)
Date Product Sold
2015-01-01 Brown Table 2
2015-01-02 White Table 1
2015-01-15 Brown Table 3
And then updating the total stock left in another table (inventory).
The problem with your query is that is will revise inventory with all the matching values of inventory_out each time you run the update: so when your Product is "Brown Table" on 15th Jan, it will remove both the 15th and 1st stock movements on the 15th, having already updated the transaction from the 1st on the 1st when you last did it.
The way I would do it is to create a stored procedure to change stock: it would insert the transaction in the inventory_out table, and update the inventory table within the same transaction, but as two separate SQL commands - using the number of items and product passed in as parameters.
Much cleaner solution.