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

Toi*_*k95 4 sql postgresql select inner-join

我有一个与sites和的数据库counties。每个站点都位于一个县。在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;
Run Code Online (Sandbox Code Playgroud)

sites尽管该cgid列中的每个值都相同(第一个县的ID),但该表已更新。我该怎么做才能获得正确的价值?

a_h*_*ame 5

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

所以我想你想要这个:

UPDATE sites s
  SET cgid = c.gid 
FROM counties c 
where c.name = s.county;
Run Code Online (Sandbox Code Playgroud)

假定counties.namesites.county都是唯一的。