mysql: я хочу суммировать все значения кредита из таблицы semester, а затем добавить в другой столбец total_credit из другой таблицы - PullRequest
1 голос
/ 03 августа 2020

У меня есть код ниже:

UPDATE VIEW
LEFT JOIN sem_view ON (view.semester = sem_view.semester)
SET view.t_credit = SUM(sem_view.credit)

, но он не работает, говоря о недопустимом использовании группы

1 Ответ

1 голос
/ 03 августа 2020
  1. Данные для обновления должны быть предварительно подготовлены в подзапросе. При обновлении должны использоваться уже агрегированные данные.

  2. Соединение слева может быть ошибочным - оно установит значение в целевой таблице на 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 - это имя обновляемой таблицы.

...