这一定是重复的,但我在谷歌搜索答案时遇到了麻烦。我有以下Postgres表:
stores:
id - integer
zipcode - varchar
county - varchar, nullable
zipcode_to_county:
zipcode - varchar
county - varchar
目前county
中stores
的所有值都为空 - 我只知道他们的邮政编码。现在,我想通过在county
中查找每个商店的zipcode
来更新zipcode_to_county
列。
我可以用Python编写脚本,但是我可以直接在SQL中编写吗?
或许这样的事情:
INSERT into stores(county) (
SELECT z.county FROM stores s
LEFT JOIN zipcode_to_county z
WHERE s.zipcode=z.zipcode
);
我猜内部查询将返回一组行,然后逐个插入,但我不知道如何确保他们是"对&#34 ;行集。
并非每个邮政编码都会出现在zipcode_to_county
表中,因此需要LEFT JOIN
某处。
答案 0 :(得分:2)
您应UPDATE
现有行。
UPDATE stores
SET country = z.country
FROM zipcode_to_county z
WHERE stores.zipcode = z.zipcode;
这里不需要外连接,因为这只会产生额外的NULL值。
答案 1 :(得分:0)
您必须更新stores
表。其中一种方法如下:
UPDATE stores
SET county = (SELECT county
FROM zipcode_to_county
WHERE zipcode_to_county.zipcode = stores.zipcode)