Two steps are likely required without using subqueries (assuming that's even doable in this case).
A totals query grouped by part number (if I understand the issue) that returns the Max(Weight) will provide the weights for a part.
An update query can update WHERE [Part Number] = 0 using the results of the first query. You'd create an equal join between the target table and the first query. I suggested the Max function on the premise that you might have varying weight entries for a part amongst the 20K records.
Test the update on a copy of your table!
Last edited by Micron; 02-04-2016 at 11:48 AM.
Reason: join comment
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.