mysql更新连接
对于一个系谱网站,我正在寻找以下解决方案:有2个表,人和关系。人们可以有几种关系,但作为父母,只有一种关系。人们有一个整数指向他们父母的关系,关系有两个整数指向形成关系的人。 在计算谁的孩子最多时,我需要先计算一段关系中孩子的数量 我使用的MySQL是:mysql更新连接,mysql,sql,inner-join,Mysql,Sql,Inner Join,对于一个系谱网站,我正在寻找以下解决方案:有2个表,人和关系。人们可以有几种关系,但作为父母,只有一种关系。人们有一个整数指向他们父母的关系,关系有两个整数指向形成关系的人。 在计算谁的孩子最多时,我需要先计算一段关系中孩子的数量 我使用的MySQL是: UPDATE relations r INNER JOIN persons p ON r.ID = p.Parents SET Children = SUM(p) GROUP BY p; 但结果是: 您的SQL语法有错误;查看与MySQL服务
UPDATE relations r
INNER JOIN persons p
ON r.ID = p.Parents
SET Children = SUM(p)
GROUP BY p;
但结果是:
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第5行“groupbyp”附近使用的正确语法
怎么了?一种方法是:
update interstream.relations r
set r.children =
(
select SUM(id)
from interstream.persons
where r.ID = Parents
group by id
)
不能在查询中进行这样的聚合。您可以在子查询中执行此操作:
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;
这从头到尾都是胡说八道。有“主键”和“外键”。不是“指向的整数”。如果没有表架构的清晰描述,我们将无法帮助您。
关系
是联接表吗?换句话说,relations
仅仅是两列,其中第一列可能是家长的person表主键,第二列可能是返回person表的外键,表示孩子?非常感谢!这正是我要找的,而且成功了!