Данные для обновления должны быть предварительно подготовлены в подзапросе. При обновлении должны использоваться уже агрегированные данные.
Соединение слева может быть ошибочным - оно установит значение в целевой таблице на NULL, если данные за интересующий семестр соответствуют sem_view
нет. Но если logi c нуждается в этом, вы можете использовать LEFT JOIN вместо INNER в следующем запросе.
Всего:
UPDATE `view`
JOIN ( SELECT sem_view.semester, SUM(sem_view.credit) summ
FROM sem_view
GROUP BY sem_view.semester ) data_for_updating
ON `view`.semester = data_for_updating.semester
SET `view`.t_credit = data_for_updating.summ;
PS. Текст выглядит так: view
- это имя обновляемой таблицы.