根据Postgresql中的联接设置其他表中的值?
这是一个非常简单的问题,对不起,但我不知道我做错了什么。我想基于联接将表X中的值添加到表A中。我的SQL命令是直截了当的(在这里的几篇文章中讨论过): 在我看来,这应该将根据Postgresql中的联接设置其他表中的值?,sql,postgresql,join,Sql,Postgresql,Join,这是一个非常简单的问题,对不起,但我不知道我做错了什么。我想基于联接将表X中的值添加到表A中。我的SQL命令是直截了当的(在这里的几篇文章中讨论过): 在我看来,这应该将numpts的值添加到tableA中的n列,其中tableA的id等于tableX中的id。该命令将运行,但它会将列n中的所有值设置为1。知道tableX的行数少于tableA可能很重要。我做错了什么 但是,当我执行选择查询而不是更新时,我会得到正确匹配的结果…您需要小心。如果id在tableX中多次出现,则您希望在加入之前进行
numpts
的值添加到tableA
中的n
列,其中tableA
的id等于tableX
中的id
。该命令将运行,但它会将列n
中的所有值设置为1。知道tableX
的行数少于tableA
可能很重要。我做错了什么
但是,当我执行
选择
查询而不是更新
时,我会得到正确匹配的结果…您需要小心。如果id
在tableX
中多次出现,则您希望在加入之前进行聚合。所以这可能就是你想要的:
UPDATE tableA SET n = x.numpts
FROM tableX AS x WHERE tableA.id = x.id;
UPDATE tableA
SET n = x.numpts
FROM (SELECT x.id, SUM(x.numpts) as numpts
FROM tableX x
GROUP BY x.id
) x
WHERE a.id = x.id;
如果重复不是问题,那么Roman和Oto都为Postgres提供了正确的语法。您需要小心。如果
id
在tableX
中多次出现,则您希望在加入之前进行聚合。所以这可能就是你想要的:
UPDATE tableA
SET n = x.numpts
FROM (SELECT x.id, SUM(x.numpts) as numpts
FROM tableX x
GROUP BY x.id
) x
WHERE a.id = x.id;
如果重复不是问题,那么Roman和Oto都为Postgres提供了正确的语法。感谢大家的快速回答!现在可以了。谢谢你们的快速回答!现在工作。
UPDATE tableA
SET n = x.numpts
FROM (SELECT x.id, SUM(x.numpts) as numpts
FROM tableX x
GROUP BY x.id
) x
WHERE a.id = x.id;