2016-11-02 147 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

真奇怪:你有最早的時間戳,但我從來沒有見過你的帖子。 –

相關問題