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

如何删除UNION联合查询结果中的NULL值记录

你当前第二个查询中的CASE表达式存在逻辑冗余:case when address is null then address else null end无论address是否为NULL,最终返回结果都是NULL,这是结果集出现大量NULL行的核心原因。

方案1:最小改动,最终结果统一过滤

无需修改原有子查询逻辑,将UNION整体作为子查询,外层加过滤条件即可:

SELECT * 
FROM (
    -- 此处替换为你原有完整的UNION查询
    query A....
    UNION
    SELECT (CASE WHEN address IS NULL THEN address ELSE NULL END) AS address ......
) AS union_total
WHERE address IS NOT NULL;

方案2:子查询提前过滤(性能更优)

分别在两个子查询中先过滤掉NULL值,减少UNION合并时的数据量,执行效率更高:

  • 给query A追加过滤条件:WHERE address IS NOT NULL
  • 简化第二个查询的冗余CASE逻辑,同时追加过滤条件:
-- 简化后的第二个查询示例,不需要额外CASE判断
query A WHERE address IS NOT NULL
UNION
SELECT address FROM 你的表名 WHERE address IS NOT NULL

如果你确实需要保留原有CASE逻辑,写法如下:

query A WHERE address IS NOT NULL
UNION
SELECT (CASE WHEN address IS NULL THEN address ELSE NULL END) AS address 
FROM 你的表名
WHERE address IS NOT NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:18:04