PostgreSQL中如何根据关联表数据设置af表precedence列值
PostgreSQL实现af表precedence列的新增与值设置
步骤1:在af表中新增precedence列
先执行ALTER TABLE语句添加列,建议先允许空值,待后续完成数据更新后,可根据业务需求修改为非空约束:
ALTER TABLE af ADD COLUMN precedence integer;
步骤2:根据af_pb关联表更新precedence值
提供两种实用写法,解决你之前CASE WHEN未成功的问题:
方法一:EXISTS子查询结合CASE WHEN
直接检查当前af.id在af_pb表中是否存在匹配记录,逻辑直观清晰:
UPDATE af SET precedence = CASE WHEN EXISTS (SELECT 1 FROM af_pb WHERE af_pb.af_id = af.id) THEN 0 ELSE 1 END;
方法二:LEFT JOIN关联判断
通过左关联af_pb表,利用关联结果是否为空来赋值,适合需要关联更多字段的场景:
UPDATE af SET precedence = CASE WHEN ap.af_id IS NOT NULL THEN 0 ELSE 1 END FROM af LEFT JOIN af_pb ap ON ap.af_id = af.id;
可选:设置precedence列为非空约束
确认所有记录都已完成赋值后,可将列设置为非空,保证数据完整性:
ALTER TABLE af ALTER COLUMN precedence SET NOT NULL;
内容的提问来源于stack exchange,提问作者ATW
相关产品推荐
相关产品推荐

