mysql обновление присоединиться
Для сайта родословной я ищу решение для следующих: есть 2 таблицы, люди и отношения. Люди могут иметь несколько отношений, но иметь только одно отношение как их родители. У людей есть целое число, указывающее на отношение их родителей, а отношения имеют два целых числа, указывающих на людей, которые формируют отношение. При подсчете того, у кого больше всего детей, мне нужно сначала рассчитать количество детей в одном отношении.
MySQL, который я использовал:
UPDATE relations r
INNER JOIN persons p
ON r.ID = p.Parents
SET Children = SUM(p)
GROUP BY p;
Но это приводит к: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'GROUP BY p' в строке 5
В чем дело?
2 ответа
Вы не можете выполнить такую агрегацию в запросе. Вы можете сделать это в подзапросе:
UPDATE relations r INNER JOIN
(SELECT p.Parents, SUM(p.p) as sump -- Should this really be COUNT(*)?
FROM persons p
GROUP BY p.Parents
) p
ON r.ID = p.Parents
SET r.Children = sump;
Один из способов сделать это:
update interstream.relations r
set r.children =
(
select SUM(id)
from interstream.persons
where r.ID = Parents
group by id
)