我有一个包含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;
表sites
已更新,但cgid
列中的每个值都相同(第一个县的ID)。我能做些什么来获得正确的价值观?
答案 0 :(得分:4)
update
语句中不应重复from
语句的目标表
所以我想你想要这个:
UPDATE sites s
SET cgid = c.gid
FROM counties c
where c.name = s.county;
这假定counties.name
和sites.county
都是唯一的。
答案 1 :(得分:0)
UPDATE sites AS s
SET cgid = c.gid
FROM counties AS c
WHERE c.name = s.county
答案 2 :(得分:0)
您不需要JOIN
。相反,您只需要连接WHERE
子句中的两个表:
UPDATE sites s
SET cgid = c.gid
FROM counties c
WHERE c.name = s.county;