oracle NOT exists函数用列

exists (sql 返回结果集为真) 
not exists (sql 不返回结果集为真)

1、对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。

2、对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。




SELECT a.*

FROM t_department a
WHERE a.id   IN('1e48c442-0b70-33bc-9191-6c6c1de226bb', '6e0e7055-a032-33f9-92a4-f33163c21f49', '8a1e808b-55fd-3945-9cb3-d8857ed88389', '2e4866d9-a8e4-36c4-aa38-0bc4626d7344', 'c69db3c9-7db7-3d01-a641-2d4ded23f775')
AND NOT exists
  (SELECT b.id
  FROM t_department b
  WHERE b.id IN('1e48c442-0b70-33bc-9191-6c6c1de226bb', '6e0e7055-a032-33f9-92a4-f33163c21f49', '8a1e808b-55fd-3945-9cb3-d8857ed88389', '2e4866d9-a8e4-36c4-aa38-0bc4626d7344', 'c69db3c9-7db7-3d01-a641-2d4ded23f775')
  AND a.id != b.Id
  AND instr(a.indexcode, b.INDEXCODE)>=0
  AND a.levels > b.levels

  )


原先数据   一级部门   A,B,C 二级部门 A1,D1,三级部门 E1

经过该sql会将具有上下级关系的部门 中  下级去掉

得到数据 一级部门   A,B,C 二级部门 D1,三级部门 E1

no exists()中查询的是A的id   (此SQL主要是将上面id一一与查询出的A的id判断是否具有上下级关系有的话就把该条id去掉)



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值