zoukankan      html  css  js  c++  java
  • 【代码保留】exists和not exists

    代码功能:查询所有的是7或8并且不是4和5的项

    select c.udt_usr_id usr_id, f.usr_name, c.udt_org_id org_id, e.org_shorname
     
    from asm_useridentity c, ogm_organization e, asm_user f
     
    where exists (select a.org_id
             
    from ogm_organization a
            
    where (a.org_codid = '7' or a.org_codid = '8')
              
    and c.udt_org_id = a.org_id)
      
    and not exists (select b.udt_usr_id
             
    from ogm_organization a, asm_useridentity b
            
    where (a.org_codid = '4' or a.org_codid = '5')
              
    and b.udt_org_id = a.org_id
              
    and c.udt_usr_id = b.udt_usr_id)
      
    and exists (select c.udt_org_id
             
    from ogm_organization d
            
    where c.udt_org_id = d.org_id
            CONNECT
    BY d.org_parentid = PRIOR d.org_id
             START
    WITH d.org_id = '402')
      
    and c.udt_org_id = e.org_id
      
    and f.usr_id = c.udt_usr_id
     
    group by udt_usr_id, udt_org_id, org_shorname, usr_name
     
    order by org_id asc

    后话:

    exists和not exists与in和not in的区别:

    1、效率上的,这一点google一下会有很多

    2、使用上的区别:

    由in转换成exists的情况:

    在in前面通常有t.***id in (     select ***id from table1 a where *=*    )

    转换则为:exists (    select ***id from table1 a where *=* and a.***id=t.***id     )

    not exists对应not in只是在exists前加not,其余相同。

    3、注意以上代码中or关键字,如果有or,通常需要在or的左右两侧的条件之间进行括号。而在in中通常使用与不使用效果相同,但在exists中则会有所区别。

  • 相关阅读:
    旋转编码器控制线扫相机
    函数被const修饰,const修饰的究竟是谁?
    静态函数不能引用非静态成员变量的原因,this指针
    Ubuntu18.04 截图工具flameshot
    基于STM32的uCGUI移植和优化
    基于bootsplash的嵌入式linux启动画面定制
    uC/OS-II源码分析(一)
    uC/OS-II源码分析(二)
    uC/OS-II源码分析(三)
    uC/OS-II源码分析(四)
  • 原文地址:https://www.cnblogs.com/volnet/p/970163.html
Copyright © 2011-2022 走看看