• sql 子查询中的exists  和 in


    exists貌似不是标准sql 

    exists()是用来判断括号里面的值或者结果集是否为null的,
      返回的是bool类型的,比如select * from a where exists(select 1 from b where id=a.id), 同(select id from b where id = a.id)
    如果select 1 from b where id=a.id这一句能查出来数据,那么查出来的a表中的数据是这样写是一样的
    :select * from a where id in(select id from b);只不过在用in查询的时候要进行全表查询,效率没有exists高

     如果子查询中要处理的少,用in  //where t.id in ('040000000000PS','040000000000QV') 
     查询结果多,或条件多于1个用exists

    select * from J_YHDA t
    where exists (select null from dual) //oracle中这样写. 在子查询中使用 NULL 仍然返回结果集 等同select all .没where
    别的数据库好像这样写也行
    select * from J_YHDA t
     where exists (select null )

    select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
     select * from TableIn where ANAME in(select BNAME from TableEx) //这俩结果一样     (第一个相关,第二个非相关, 效率不好说)

  • 相关阅读:
    hdu 1520(简单树形dp)
    hdu 1561(树形dp)
    hdu 2809(状压dp)
    hdu 2196(求树上每个节点到树上其他节点的最远距离)
    hdu 4003(树形dp)
    hdu 3899(树形dp)
    hdu 4714(树形dp)
    hdu 3905(dp)
    Linux mariadb(Mysql)的主从复制架构
    面向对象静态变量代码题
  • 原文地址:https://www.cnblogs.com/wangduqiang/p/4180930.html
Copyright © 2020-2023  润新知