The condition ...
Code:
 where b.id = a.id
and b.point_value != a.point_value
... is not enough to ensure that you only get one row back from table_assn for each row in table_tmp.