Это правильный синтаксис:
UPDATE table_name t1
INNER JOIN (select distinct progID, type_name from table_name where type_name <>'') t2
ON t1.progID = t2.progID
SET t1.type_name = t2.type_name
WHERE t1.type_name <> ''
Вам не нужно предложение FROM.Но вы уверены, что хотите обновить столбец type_name со значением?Возможно, измените последнее условие на:
WHERE t1.type_name IS NULL