这一定是重复的,但我无法通过谷歌搜索答案。我有以下 Postgres 表:
stores:
id - integer
zipcode - varchar
county - varchar, nullable
zipcode_to_county:
zipcode - varchar
county - varchar
目前 stores
中 county
的所有值都是 null - 我只知道他们的邮政编码。现在我想更新 county
列,方法是查找 zipcode_to_county
中每个商店的 zipcode
。
我可以用 Python 编写脚本,但我可以直接在 SQL 中执行吗?
也许是这样的:
INSERT into stores(county) (
SELECT z.county FROM stores s
LEFT JOIN zipcode_to_county z
WHERE s.zipcode=z.zipcode
);
我想内部查询会返回一组行,然后逐行插入,但我不知道如何确保它们是“正确”的行集。
并非每个邮政编码都会出现在 zipcode_to_county
表中,因此需要在某处使用 LEFT JOIN
。
最佳答案
您应该UPDATE
现有的行。
UPDATE stores
SET country = z.country
FROM zipcode_to_county z
WHERE stores.zipcode = z.zipcode;
这里不需要外连接,因为那只会产生额外的 NULL 值。
关于sql - 从 JOIN 中插入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45275415/