You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何用查询语句更新表中NULL的product_id字段?

正确实现方法

首先纠正你两个核心错误:

  • INSERT是用来新增数据行的,你要修改已有行的字段值,得用UPDATE语句。
  • 判断字段为NULL必须用IS NULL,不能用= NULL——因为在SQL里,NULL和任何值比较的结果都是NULL,永远不会匹配成功。

根据你的需求,分两种场景给出正确SQL:

场景1:表a和表b通过关联字段匹配(比如共享product_name)

如果表a和表b存在对应关系(比如a的product_name和b的product_name一一对应),要把a中product_id为NULL的行,替换成b中同product_name对应的product_id:

UPDATE a
SET product_id = b.product_id
FROM b
WHERE a.product_id IS NULL
AND a.product_name = b.product_name;

场景2:将a中所有NULL的product_id替换为b中固定值(product_name='foo'对应的product_id)

如果只是想把a里所有product_id为NULL的行,统一替换成b中product_name='foo'的那一个product_id(注意:要保证b中这个条件仅返回一行,否则会报错):

UPDATE a
SET product_id = (SELECT product_id FROM b WHERE product_name='foo')
WHERE product_id IS NULL;

如果b中product_name='foo'可能返回多行,需要限制只取一行,比如:

UPDATE a
SET product_id = (SELECT product_id FROM b WHERE product_name='foo' LIMIT 1)
WHERE product_id IS NULL;

内容的提问来源于stack exchange,提问作者DP.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:10:49