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

Oracle如何查询无关联地址或无指定条件关联地址的用户

问题核心逻辑修正

你要实现的筛选规则本质可以简化为:匹配所有满足用户名含USR、且不存在任何CODE以'A'开头的关联地址的用户,这个规则天然覆盖你要的两类目标用户:

  • 没有任何关联地址的用户
  • 所有关联地址的CODE都不以'A'开头的用户

你原有语句的问题是:EXISTS判断仅能匹配「存在至少一个非A开头地址」的用户,直接把没有地址的用户排除在了结果外。

修正后SQL语句

SELECT    
    USR.ID "ID",    
    USR.NAME "NAME"
FROM 
    USERS USR  
WHERE 
    -- 核心条件:不存在该用户的A开头CODE地址
    NOT EXISTS (
        SELECT * FROM ADDRESS ADDR 
        WHERE ADDR.USERID = USR.ID AND ADDR.CODE LIKE 'A%'
    )
    AND USR.NAME LIKE '%USR%'

注:顺带修复了你原有语句里的两个语法问题:SELECT字段末尾多余的逗号、表别名是USR但字段前误用了USER前缀。

如果你想要显式拆分两类用户的判断逻辑,也可以写成如下形式,执行效果和上面的语句完全一致:

SELECT    
    USR.ID "ID",    
    USR.NAME "NAME"
FROM 
    USERS USR  
WHERE 
    (
      -- 存在非A开头的关联地址
      EXISTS (SELECT * FROM ADDRESS ADDR WHERE ADDR.USERID = USR.ID AND ADDR.CODE NOT LIKE 'A%') 
      -- 或者没有任何关联地址
      OR NOT EXISTS (SELECT * FROM ADDRESS ADDR WHERE ADDR.USERID = USR.ID)
    )
    AND USR.NAME LIKE '%USR%'

内容的提问来源于stack exchange,提问作者johnny-b-goode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:09:03