这一定是重复的,但我很难在谷歌上找到答案。我有以下的Postgres表:
stores:
id - integer
zipcode - varchar
county - varchar, nullable
zipcode_to_county:
zipcode - varchar
county - varchar
目前
county
中stores
的所有值都为空-我只知道它们的zipcode。现在我想通过查找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
);
我猜内部查询将返回一组行,然后逐个插入,但我不知道如何确保它们是“正确”的行集。
不是每个zipcode都会出现在
zipcode_to_county
表中,因此需要在某个地方使用LEFT JOIN
。 最佳答案
您应该UPDATE
现有行。
UPDATE stores
SET country = z.country
FROM zipcode_to_county z
WHERE stores.zipcode = z.zipcode;
这里不需要外部连接,因为这只会产生额外的空值。
关于sql - 从JOIN插入值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45275415/