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

如何让SQL子查询不比较NULL值?获取唯一人员数据

筛选唯一人员数据(排除已存在CPF,忽略NULL值)

需要一段返回唯一人员数据的脚本:CPF作为唯一标识符,但并非所有记录都登记了CPF。要求子查询不比较NULL值,后续将通过姓名做进一步验证。

现有查询如下,需要修改使其不处理NULL值的CPF比较:

SELECT * FROM TAB.ORIGEM WHERE NOT EXISTS ( SELECT 1 FROM TAB.DESTINO WHERE TAB.DESTINO.CPF = TAB.ORIGEM.CPF )

表结构与预期结果

TAB.ORIGEM

NAMECPF
JOAO123
MARIA321
PAULO

TAB.DESTINO

NAMECPF
JOAO123
JOANA456
JOSE

预期结果

NAMECPF
MARIA321
PAULO

修改后的查询

SELECT * 
FROM TAB.ORIGEM 
WHERE NOT EXISTS (
    SELECT 1 
    FROM TAB.DESTINO 
    WHERE TAB.DESTINO.CPF = TAB.ORIGEM.CPF
    AND TAB.ORIGEM.CPF IS NOT NULL
)

逻辑说明

  • 新增AND TAB.ORIGEM.CPF IS NOT NULL条件后,当ORIGEM中的CPF为NULL时,子查询的匹配条件永远不成立,因此NOT EXISTS会返回真,这类记录会被保留(对应预期结果中的PAULO)。
  • 对于CPF非NULL的记录,只有当DESTINO中不存在相同CPF值时,才会被筛选出来(比如MARIA的321在DESTINO中无匹配,被保留;JOAO的123存在匹配,被排除)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:23:39