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

PostgreSQL中无匹配数据时如何返回指定null值记录

实现需求的SQL方案

可以实现这个需求,核心是通过条件判断+联合查询处理两种场景:有匹配记录时返回匹配结果,无匹配时返回col1、col2均为null的record3。

具体SQL语句

-- 先获取符合查询条件的记录
SELECT * 
FROM your_table 
WHERE col1 = 'c' OR col2 = 'd'

UNION ALL

-- 当无匹配记录时,返回col1和col2都为null的记录
SELECT * 
FROM your_table 
WHERE col1 IS NULL AND col2 IS NULL
  AND NOT EXISTS (
    SELECT 1 
    FROM your_table 
    WHERE col1 = 'c' OR col2 = 'd'
  );

逻辑说明

  • 第一部分查询负责返回满足col1='c' OR col2='d'的记录;
  • 第二部分通过NOT EXISTS检查第一部分是否有结果:如果没有匹配记录,就返回col1和col2均为null的record3;如果有匹配结果,这部分不会返回任何数据;
  • 使用UNION ALL而非UNION,因为两种场景不会产生重复数据,能提升查询性能。

场景验证

  1. 当查询条件为col1='a' OR col2='b'时,第一部分返回record1和record2,第二部分的NOT EXISTS条件不成立,最终结果就是前两条记录,符合预期;
  2. 当查询条件为col1='c' OR col2='d'时,第一部分无结果,第二部分触发返回record3,满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:00:57