sql - 从 JOIN 中插入值?

标签 sql postgresql

这一定是重复的,但我无法通过谷歌搜索答案。我有以下 Postgres 表:

stores:
   id - integer
   zipcode - varchar
   county - varchar, nullable
zipcode_to_county:
   zipcode - varchar
   county - varchar

目前 storescounty 的所有值都是 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/

相关文章:

sql - 将 BLOB 与 Oracle 数据库中的其他 BLOB 进行比较

sql - 不同步时如何重置 Postgres 的主键序列?

postgresql - 如何根据 PostgreSQL 中的先前值计算计算列的值

python - 我应该在 django/postgresql 中删除或设置一个变量为 "deleted"吗?

c# - 调用存储过程时需要Connection.Open()吗?

mysql - SQL 查询以获取结果集最后一行中所有列值的总和以及行总和(分组依据)

SQL 双动态透视

php - 如何将sql变成多条语句的事务?

python - 如何使用 PostgreSQL 在 Python 中理解和使用 asyncio?

postgresql - 获取架构中所有表中相同字段的最大值