这是一个非常简单的问题,抱歉,但我不知道自己做错了什么。我想基于连接将表X中的值添加到表A.我的SQL命令很简单(在这里的几篇文章中讨论过):
UPDATE tableA SET n = x.numpts
FROM tableA AS a, tableX AS x WHERE a.id = x.id;
我应该在numpts
中将n
的值添加到tableA
中的tableA
列,其中id
的ID等于tableX
{ {1}}。该命令会运行,但会将column n
中的所有值设置为1.也许了解tableX
的行数少于tableA
,这一点非常重要。我做错了什么?
但是,当我执行SELECT
查询而不是UPDATE
时,我会得到正确匹配的结果...
答案 0 :(得分:3)
UPDATE tableA SET n = x.numpts
FROM tableX AS x WHERE tableA.id = x.id;
答案 1 :(得分:2)
UPDATE tableA
SET n = tableX.numpts
FROM tableX
WHERE tableA.id = tableX.id
答案 2 :(得分:1)
你需要小心。如果在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提供了正确的语法。