ОБНОВЛЕНИЕ ЗНАЧЕНИЯ В MYSQL MARIA DB с JOIN - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь изменить значение таблицы столбцов с помощью функции sum, это мой код:

For example 
c.total = (10-2-3) - (3) 
c.total = 2

update tabC c 
JOIN tabB b ON b.c_id = c.id 
set c.total = (c.v1 - c.v2 - c.v3) - IF(sum(b.payment) is not null, sum(b.payment), 0) 
where c.id= 983;

, но я получаю следующую ошибку:

ERROR 1111 (HY000): Неправильное использование групповой функции

Я думаю, что ошибка является суммой, но как я могу это исправить?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вам нужно присоединиться к подзапросу, который использует GROUP BY.

UPDATE tabC c
LEFT JOIN (
    SELECT c_id, SUM(payment) AS total_payment
    FROM tabB
    GROUP BY c_id) AS b ON b.c_id = c.id
SET c.total = (c.v1 - c.v2 - c.v3) - IFNULL(b.total_payment, 0)
WHERE c.id = 983
0 голосов
/ 18 февраля 2020

Вы должны использовать вложенный подзапрос с агрегированным результатом для соединения

  update tabC c 
  JOIN  (
    select   c_id, ifnull(sum(payment),0) tot_payment
    from tabB
    group by c_id
  ) b ON b.c_id = c.id 
  set c.total = (c.v1 - c.v2 - c.v3) - b.tot_payment 
  where c.id= 983;
...