Я думаю, что ваша проблема может заключаться в том, что вы ссылаетесь на значения в вашем предложении обновления. Следующее может работать лучше:
INSERT
INTO table1
SELECT * FROM temp
ON DUPLICATE KEY UPDATE
table1.tel = coalesce(values(tel),tel),
table1.fax = coalesce(values(fax),fax)