繁体   English   中英

postgreSQL根据ID匹配从一个表更新到另一个表

[英]postgreSQL update from one Table to another based on a ID match

我有一个包含sitescounties的数据库。 每个站点都位于一个县。 sites表中,已经提到了该县,但我想用ID替换它,而在另一个表中。

我的更新代码如下:

UPDATE sites
SET cgid = c.gid 
FROM (select c.gid as a from counties c
INNER JOIN sites s
ON c.name = s.county) p;

虽然cgid列中的每个值都相同(第一个县的ID),但表sites已更新。 我能做些什么来获得正确的价值观?

不应在from子句中重复update语句的目标表

所以我想你想要这个:

UPDATE sites s
  SET cgid = c.gid 
FROM counties c 
where c.name = s.county;

这假设counties.namesites.county都是唯一的。

UPDATE sites AS s
SET cgid = c.gid
FROM counties AS c
WHERE c.name = s.county

你不需要JOIN 相反,您只需要连接WHERE子句中的两个表:

UPDATE sites s
    SET cgid = c.gid 
    FROM counties c
    WHERE c.name = s.county;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM