2016-11-02 148 views
2

我有一个数据库与sitescounties。每个网站都位于一个县。在sites表中,该县已经提到,但我想用另一个表中的ID替换它。postgreSQL从一个表更新到另一个基于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

“全阵列”是什么意思?你的cgid列是数组吗?或“名称”或“县”列? –

回答

1

一个update语句的目标表不应该的from条款

在重复所以我想你想的:

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

这假定counties.namesites.county都是独一无二的。

+0

你错过了别名;-) –

+0

这确实是我需要的。谢谢! – TD1995

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

谢谢,这工作得很好! :) – TD1995

0

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

+0

真奇怪:你有最早的时间戳,但我从来没有见过你的帖子。 –

相关问题